Что такое Python-эквивалент JDBC DatabaseMetaData?
-
22-08-2019 - |
Вопрос
Что такое эквивалент Python База данныхМетаданные
Решение
Это не ответ, специфичный для 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 для выполнения этих запросов — вы можете использовать любое доступное соединение с базой данных для рабочих данных, конечно, при условии одобрения безопасности.
Другие советы
Если вы хотите использовать ODBC для доступа к данным, вы можете использовать pyodbc, http://code.google.com/p/pyodbc/wiki/Features.Pyodbc позволяет вызывать такие функции, как SQLTables, что эквивалентно функции JDBC getTables.Функции JDBC и ODBC для доступа к метаданным очень похожи.