2009-05-18 4 views

Antwort

6

Dies ist keine Python-spezifische Antwort; in der Tat, ich weiß nicht, ob Python-Datentreiber so etwas haben. Aber vielleicht hilft diese Information.

Der ANSI-Standard SQL-92 und SQL-99 erfordert die INFORMATION_SCHEMA schema, die Informationen zu den Tabellen in einem Katalog speichert.

Die Metadaten, die Sie suchen, können mit einer Abfrage für Sichten in diesem Schema abgerufen werden.

zum Beispiel:

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

Nicht alle Datenbanken implementieren, dass ein Teil des Standards. Oracle zum Beispiel nicht.

Glücklicherweise gibt es auch datenbankspezifische Tabellen, die diese Art von Informationen speichern.

Während Microsoft SQL Server die Information_Schema-Sache unterstützt, gibt es auch SQL Server-spezifische Tabellen, die mehr Metadateninformationen geben. Diese sind [CatalogName].dbo.sysobjects und [CatalogName].dbo.sysolumns. Ähnliche Abfragen in diesen Tabellen geben Ihnen die gewünschten Metadaten. Beispiel:

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

In Oracle, die ALL_TAB_COLUMNS Tabelle können Sie die Informationen:

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

Ob Sie die Standardansichten abfragen oder die db-spezifischen Ansichten, die Sie nicht ODBC müssen diese tun Queries - Sie können jede db-Verbindung verwenden, die Sie für Betriebsdaten verfügbar haben, natürlich vorbehaltlich der Sicherheitsgenehmigungen.

+0

Oracle scheint natürlich nicht zu haben ... Es scheint, ich muss die ODBC-Route gehen, um eine Standard-Funktionalität zwischen dbs zu erhalten. – Joshua

+0

Hmm, das ist eine Überraschung! Mit Oracle gibt es eine alternative Datentabelle, die Sie abfragen können. Ich werde die Antwort aktualisieren, um das anzuzeigen. – Cheeso

0

Wenn Ihr bereit für den Datenzugriff ODBC verwenden, dann könnte man Pyodbc verwenden, http://code.google.com/p/pyodbc/wiki/Features. Mit Pyodbc können Sie Funktionen wie SQLTables aufrufen, was der JDBC-getTables-Funktion entspricht. Die JDBC- und ODBC-Funktionen zum Abrufen von Metadaten sind sehr ähnlich.