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