与 JDBC DatabaseMetaData 等效的 Python 是什么?

发布于 2024-07-21 00:45:00 字数 145 浏览 7 评论 0原文

Python 相当于 DatabaseMetaData

What is the Python equivalent to DatabaseMetaData

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

孤芳又自赏 2024-07-28 00:45:01

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

If your willing to use ODBC for data access then you could use pyodbc, http://code.google.com/p/pyodbc/wiki/Features. Pyodbc allows you to call functions like SQLTables, which is equivalent to the JDBC getTables function. The JDBC and ODBC functions to get to metadata are extremely similar.

黯然 2024-07-28 00:45:01

这不是特定于 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 来执行这些查询 - 您可以使用可用于操作数据的任何数据库连接,当然要经过安全批准。

This is not a python-specific answer; in fact I don't know if Python data drivers have this sort of thing. But maybe this info will help.

The ANSI SQL-92 and SQL-99 Standard requires the INFORMATION_SCHEMA schema, which stores information regarding the tables in a catalog.

The metadata you seek can be retrieved with a query on views in that schema.

for example:

select column_name, is_nullable, data_type, character_maximum_length as maxlen 
from information_schema.columns 
where table_name = 'Products'

Not all databases implement that part of the standard. Oracle, for example, does not.

Fortunately, there are also database-specific tables that store that kind of info.

While Microsoft SQL Server supports the Information_Schema thing, there are also SQL Server-specific tables that give more metadata information. These are [CatalogName].dbo.sysobjects and [CatalogName].dbo.sysolumns. Similar queries on these tables will give you the metadata you seek. Example:

select * from [CatalogName].dbo.syscolumns 
where id = 
    (Select id from [CatalogName].dbo.sysobjects where name = 'Products')

In Oracle, the ALL_TAB_COLUMNS table can give you the information:

select column_name, data_type, data_length, data_precision, data_scale
from ALL_TAB_COLUMNS
where table_name = 'EMP';

Whether you query the standard views or the db-specific views, you don't need ODBC to do these queries - you can use whatever db connection you have available for operational data, subject to security approvals of course.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文