Wenn das sqlite3-Modul in Python verwendet wird, werden alle Elemente von cursor.description außer den Spaltennamen auf None gesetzt. Daher kann dieses Tupel nicht zur Suche nach Spaltentypen für ein Abfrageergebnis verwendet werden -API-konforme Module). Ist die einzige Möglichkeit, die Typen der Spalten zu verwenden, zu verwenden, um eine Beschreibung der Tabelle abzurufen, sie in Arbeitsspeicher zu speichern, und die Spalte-Namen von cursor.description dann mit der gesamten Tabellenbeschreibung übereinstimmen?sqlite3 und cursor.description
Antwort
Nein, es ist nicht die einzige Möglichkeit. Alternativ können Sie auch eine Zeile abrufen, darüber iterieren und die einzelnen Python-Objekte und -Typen der einzelnen Spalten überprüfen. Wenn der Wert None ist (in diesem Fall ist das SQL-Feld NULL), sollte dies eine ziemlich genaue Angabe darüber geben, was der Typ der Datenbankspalte ist.
sqlite3 verwendet nur sqlite3_column_decltype
und sqlite3_column_type
an einem Ort, und beide sind für die Python-Anwendung nicht zugänglich - also ist es kein "direkter" Weg, den Sie vielleicht gesucht haben.
Ich habe das nicht in Python versucht, aber man könnte so etwas wie
SELECT *
FROM sqlite_master
WHERE type = 'table';
versuchen, die die DDL die Tabelle erstellen verwendet CREATE-Anweisung enthält. Durch das Analysieren der DDL können Sie die Spaltentypinformationen erhalten, so wie sie sind. Beachten Sie, dass SQLITE bei Spaltendatentypen ziemlich vage und nicht einschränkend ist.