2009-10-17 13 views
5

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

答えて

5

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

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

1

私はPythonでこれを試していないが、しかし、あなたはDDLは、テーブルを作成するために使用するCREATE文が含ま

SELECT * 
FROM sqlite_master 
WHERE type = 'table'; 

ような何かを試みることができます。 DDLを解析することで、列の情報を取得することができます。列データ型の場合、SQLiteはあいまいで無制限であることを覚えておいてください。