2009-05-18 6 views

Répondre

6

Ceci n'est pas une réponse spécifique à python; En fait, je ne sais pas si les pilotes de données Python ont ce genre de chose. Mais peut-être que cette info vous aidera.

La norme ANSI SQL-92 et SQL-99 requiert le INFORMATION_SCHEMA schema, qui stocke les informations concernant les tables d'un catalogue.

Les métadonnées que vous recherchez peuvent être récupérées avec une requête sur les vues de ce schéma.

par exemple:

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

Toutes les bases de données cette partie de mettre en œuvre la norme. Oracle, par exemple, ne le fait pas.

Heureusement, il existe également des tables spécifiques aux bases de données qui stockent ce type d'informations.

Alors que Microsoft SQL Server prend en charge l'élément Information_Schema, il existe également des tables spécifiques à SQL Server qui fournissent davantage d'informations sur les métadonnées. Ce sont [CatalogName].dbo.sysobjects et [CatalogName].dbo.sysolumns. Des requêtes similaires sur ces tables vous fourniront les métadonnées que vous recherchez. Exemple:

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

Dans Oracle, la table ALL_TAB_COLUMNS peut vous donner l'information:

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

Que vous interrogez les vues standard ou les vues spécifiques à db, vous n'avez pas besoin ODBC pour faire ces requêtes - vous pouvez utiliser n'importe quelle connexion DB disponible pour les données opérationnelles, sous réserve des approbations de sécurité bien sûr.

+0

Oracle bien sûr ne semble pas avoir cela ... Il semble que je vais devoir aller sur la route ODBC pour obtenir un ensemble standard de fonctionnalités entre dbs. – Joshua

+0

Hmm, c'est une surprise! Avec Oracle, il existe une autre table de données que vous pouvez interroger. Je mettrai à jour la réponse pour l'indiquer. – Cheeso

0

Si votre prêt à utiliser ODBC pour l'accès aux données que vous pouvez ensuite utiliser pyodbc, http://code.google.com/p/pyodbc/wiki/Features. Pyodbc vous permet d'appeler des fonctions telles que SQLTables, ce qui est équivalent à la fonction getTables de JDBC. Les fonctions JDBC et ODBC pour accéder aux métadonnées sont extrêmement similaires.

Questions connexes