3

什么是 Python 等价于DatabaseMetaData

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'

并非所有数据库都实现该标准的那一部分。例如,甲骨文就没有。

幸运的是,还有一些特定于数据库的表可以存储此类信息。

虽然 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';

无论您是查询标准视图还是特定于数据库的视图,都不需要 ODBC 来执行这些查询 - 您可以使用任何可用于操作数据的数据库连接,当然要获得安全批准。

于 2009-05-18T17:59:08.680 回答
0

如果您愿意使用 ODBC 进行数据访问,那么您可以使用 pyodbc,http://code.google.com/p/pyodbc/wiki/Features。Pyodbc 允许你调用 SQLTables 之类的函数,相当于 JDBC 的 getTables 函数。获取元数据的 JDBC 和 ODBC 函数非常相似。

于 2009-05-18T17:28:03.140 回答