Python中等同于JDBC DatabaseMetaData的是什么?

3 投票
2 回答
4781 浏览
提问于 2025-04-15 11:40

Python中相当于DatabaseMetaData的是什么?

2 个回答

0

如果你愿意使用ODBC来访问数据,那么你可以使用pyodbc,具体信息可以查看这个链接:http://code.google.com/p/pyodbc/wiki/Features。pyodbc让你可以调用一些函数,比如SQLTables,这个函数和JDBC中的getTables函数是一样的。JDBC和ODBC获取元数据的函数非常相似。

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

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

撰写回答