2015-07-21 5 views
5

Desidero elencare tutti i nomi di colonna di una tabella utilizzando il pacchetto psycopg2 di Python (2.7). Ma io sono in grado di eseguire la query seguente -Metadati in Psycopg2 - d non funzionante

cur.execute("\d my_table"); 
psycopg2.ProgrammingError: syntax error at or near "\" 

C'è un supplente quale a come posso elencare i nomi delle colonne di una tabella utilizzando psycopg2? Si prega di indicare eventuali duplicati. Grazie !

risposta

5

La riga di comando psql ha alcune scorciatoie come \d ma non fa parte di SQL. Quello che vi serve è quello di interrogare information_schema:

SELECT column_name FROM information_schema.columns WHERE table_name = 'my_table'; 

EDIT: E 'davvero un'informazione importante che la riga di comando psql -E risuonerà query SQL utilizzati per implementare \d e altri comandi backslash (ogni volta che si utilizza uno di loro nel prompt di psql) come @piro ha scritto nel commento. In questo modo ottieni ciò che desideri molto facilmente.
Grazie a @piro!

+0

Quindi nessuno dei meta comandi funzionerà? –

+2

Nessuno. Ma il everething che puoi fare con i meta-comandi è anche disponibile interrogando 'information_schema' e/o' pg_catalog'. – ElmoVanKielmo

+2

nota che 'psql -E' emetterà la query usata internamente per implementare' \ d' e gli altri comandi di backslash, che è super-pratico per esplorare il 'pg_catalog'. – piro