Pergunta

O que é o Python equivalente a DatabaseMetaData

Foi útil?

Solução

Esta não é uma resposta específica-python; na verdade eu não sei se os motoristas de dados Python tem esse tipo de coisa. Mas talvez esta informação vai ajudar.

O ANSI SQL-92 e SQL-99 Norma exige a INFORMATION_SCHEMA esquema , que armazena informações sobre as tabelas em um catálogo.

Os metadados que você procura pode ser recuperada com uma consulta sobre pontos de vista em que esquema.

Por exemplo:

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

Nem todos os bancos de dados implementar essa parte da norma. Oracle, por exemplo, não faz.

Felizmente, há também mesas específicas do banco de dados que armazenam esse tipo de informação.

Enquanto a Microsoft SQL Server suporta a coisa information_schema, há também mesas específicas do SQL Server que dão informações mais metadados. Estes são [CatalogName].dbo.sysobjects e [CatalogName].dbo.sysolumns. consultas semelhantes sobre essas tabelas lhe dará a metadados que você procura. Exemplo:

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

No Oracle, a tabela de ALL_TAB_COLUMNS pode lhe dar a informação:

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

Se você consultar as vistas padrão ou os pontos de vista específicos-db, você não precisa de ODBC para fazer estas perguntas -. Você pode usar qualquer conexão db você tem disponível para dados operacionais, sujeito a aprovações de curso de segurança

Outras dicas

Se o seu dispostos a usar ODBC para acesso a dados, em seguida, você poderia usar pyodbc, http: //code.google.com/p/pyodbc/wiki/Features . Pyodbc permite que você chame funções como SQLTables, o que é equivalente à função JDBC getTables. As funções JDBC e ODBC para chegar ao metadados são extremamente semelhantes.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top