Pregunta

¿Cuál es el equivalente a Python DatabaseMetaData

¿Fue útil?

Solución

Esta no es una respuesta específico de Python; de hecho, no sé si los conductores de datos de Python tienen este tipo de cosas. Pero tal vez esta información será de ayuda.

El ANSI SQL-92 y SQL-99 estándar requiere que el INFORMATION_SCHEMA esquema , que almacena información con respecto a las tablas en un catálogo.

Los metadatos que busca puede ser recuperada con una consulta en las vistas en ese esquema.

por ejemplo:

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

No todas las bases de datos implementan esa parte de la norma. Oracle, por ejemplo, no lo hace.

Afortunadamente, también hay mesas-base de datos específica que almacenan ese tipo de información.

Mientras Microsoft SQL Server es compatible con lo INFORMATION_SCHEMA, también hay tablas SQL específicas del servidor que le dan más información de metadatos. Estos son [CatalogName].dbo.sysobjects y [CatalogName].dbo.sysolumns. consultas similares sobre estas tablas le dará los metadatos que está buscando. Ejemplo:

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

En Oracle, la mesa ALL_TAB_COLUMNS puede darle la información:

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

Si se consulta las vistas estándar o los puntos de vista-db específica, no es necesario ODBC para hacer estas consultas - se puede utilizar cualquier conexión db que tiene disponible para los datos de funcionamiento, sujeto a las aprobaciones de seguridad de curso

Otros consejos

Si su dispuestos a utilizar ODBC para acceso a datos entonces se podría utilizar pyodbc, http: //code.google.com/p/pyodbc/wiki/Features . Pyodbc le permite llamar a funciones como SQLTables, que es equivalente a la función de JDBC getTables. Las funciones de JDBC y ODBC para llegar a los metadatos son extremadamente similares.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top