¿Cuál es el equivalente a Python JDBC DatabaseMetaData?
-
22-08-2019 - |
Pregunta
¿Cuál es el equivalente a Python DatabaseMetaData
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.