Что такое Python эквивалент JDBC DatabaseMetaData? - PullRequest
3 голосов
/ 18 мая 2009

Что такое Python, эквивалентный DatabaseMetaData

Ответы [ 2 ]

6 голосов
/ 18 мая 2009

Это не специфичный для 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 для выполнения этих запросов - вы можете использовать любое доступное соединение БД для оперативных данных при условии подтверждения безопасности, конечно.

0 голосов
/ 18 мая 2009

Если вы хотите использовать ODBC для доступа к данным, вы можете использовать pyodbc, http://code.google.com/p/pyodbc/wiki/Features. Pyodbc позволяет вам вызывать функции, подобные SQLTables, что эквивалентно функции getTables JDBC. Функции JDBC и ODBC для доступа к метаданным чрезвычайно похожи.

...