DatabaseMetaDataに相当する Python は何ですか?
2 に答える
これは python 固有の回答ではありません。実際、Python データ ドライバにこのような機能があるかどうかはわかりません。でも多分この情報は役に立ちます。
ANSI SQL-92 および SQL-99 標準では、テーブルに関する情報をカタログに格納 するINFORMATION_SCHEMA スキーマが必要です。
探しているメタデータは、そのスキーマ内のビューに対するクエリで取得できます。
例えば:
select column_name, is_nullable, data_type, character_maximum_length as maxlen
from information_schema.columns
where table_name = 'Products'
すべてのデータベースが標準のその部分を実装しているわけではありません。たとえば、Oracle はそうではありません。
幸いなことに、そのような情報を格納するデータベース固有のテーブルもあります。
Microsoft SQL Server は Information_Schema をサポートしていますが、より多くのメタデータ情報を提供する SQL Server 固有のテーブルもあります。これらは[CatalogName].dbo.sysobjects
と[CatalogName].dbo.sysolumns
です。これらのテーブルに対して同様のクエリを実行すると、求めるメタデータが得られます。例:
select * from [CatalogName].dbo.syscolumns
where id =
(Select id from [CatalogName].dbo.sysobjects where name = 'Products')
Oracle では、ALL_TAB_COLUMNS テーブルから次の情報を得ることができます。
select column_name, data_type, data_length, data_precision, data_scale
from ALL_TAB_COLUMNS
where table_name = 'EMP';
標準ビューまたは db 固有のビューのどちらを照会する場合でも、ODBC を使用してこれらのクエリを実行する必要はありません。もちろん、セキュリティの承認が得られれば、運用データに使用できる任意の db 接続を使用できます。
データ アクセスに ODBC を使用する場合は、pyodbc、http: //code.google.com/p/pyodbc/wiki/Features を使用できます。Pyodbc では、JDBC の getTables 関数に相当する SQLTables などの関数を呼び出すことができます。メタデータを取得するための JDBC 関数と ODBC 関数は非常に似ています。