5

Python で sqlite3 モジュールを使用する場合、列名を除く cursor.description のすべての要素が None に設定されるため、このタプルを使用してクエリ結果の列タイプを見つけることはできません (他の DB-API 準拠モジュールとは異なります)。pragma table_info(table_name).fetchall()テーブルの説明を取得し、それをメモリに格納し、その列名を cursor.description からテーブル全体の説明に一致させるために使用する列の型を取得する唯一の方法はありますか?

4

2 に答える 2

5

いいえ、それが唯一の方法ではありません。または、1 つの行をフェッチし、それを反復処理して、個々の列の Python オブジェクトと型を検査することもできます。値が None でない限り (SQL フィールドが NULL の場合)、データベースの列の型がかなり正確に示されます。

sqlite3 はsqlite3_column_decltypeandsqlite3_column_typeを 1 つの場所でのみ使用し、どちらも Python アプリケーションからはアクセスできません。そのため、探していた「直接的な」方法ではありません。

于 2009-10-17T22:29:59.600 に答える
1

私はPythonでこれを試していませんが、次のようなものを試すことができます

SELECT *
FROM sqlite_master
WHERE type = 'table';

これには、テーブルの作成に使用されるDDLCREATEステートメントが含まれています。DDLを解析することにより、列タイプ情報を取得できます。列のデータ型に関しては、SQLITEはかなり曖昧で制限がないことを忘れないでください。

于 2009-10-18T22:12:46.947 に答える