3

DatabaseMetaDataに相当する Python は何ですか?

4

2 に答える 2

7

これは 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 接続を使用できます。

于 2009-05-18T17:59:08.680 に答える
0

データ アクセスに ODBC を使用する場合は、pyodbc、http: //code.google.com/p/pyodbc/wiki/Features を使用できます。Pyodbc では、JDBC の getTables 関数に相当する SQLTables などの関数を呼び出すことができます。メタデータを取得するための JDBC 関数と ODBC 関数は非常に似ています。

于 2009-05-18T17:28:03.140 に答える