Domanda

Qual è il Python equivalente a DatabaseMetaData

È stato utile?

Soluzione

Questa non è una risposta specifica-python; infatti io non so se i conducenti di dati Python hanno questo genere di cose. Ma forse queste informazioni sarà di aiuto.

L'ANSI SQL-92 e SQL-99 standard richiede l' INFORMATION_SCHEMA schema , che memorizza le informazioni per quanto riguarda le tabelle in un catalogo.

I metadati che cercate possono essere recuperate con una query sulle viste in quello schema.

Ad esempio:

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

Non tutti i database implementano che parte dello standard. Oracle, per esempio, non lo fa.

Per fortuna, ci sono anche le tabelle specifiche del database che memorizzano questo tipo di informazioni.

Mentre Microsoft SQL Server supporta la cosa information_schema, ci sono anche le tabelle di SQL Server-specific che danno più metadati informazioni. Questi sono [CatalogName].dbo.sysobjects e [CatalogName].dbo.sysolumns. query simili su queste tabelle vi darà i metadati che cercate. Esempio:

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

In Oracle, la tabella ALL_TAB_COLUMNS può dare le informazioni:

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

Se si esegue una query la vista standard o le viste specifiche db, non è necessario ODBC di fare queste domande - è possibile utilizzare qualsiasi connessione db che avete a disposizione per i dati operativi, soggetta alle approvazioni di sicurezza, naturalmente,

Altri suggerimenti

Se il tuo disposti a utilizzare ODBC per l'accesso ai dati, allora si potrebbe usare pyodbc, http: //code.google.com/p/pyodbc/wiki/Features . Pyodbc permette di chiamare funzioni come SQLTables, che è equivalente alla funzione JDBC getTable. Le funzioni JDBC e ODBC per raggiungere i metadati sono estremamente simili.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top