2014-10-04 105 views
3

我需要从查询中获取字段属性,例如在此问题中:How to get column attributes query from table name using PostgreSQL? 但对于查询,是否有这种方法?如何从使用PostgreSQL的查询中获取列属性?

+0

您正在使用哪种编程语言? PL/pgSQL的? Java的? C++? – 2014-10-04 21:51:53

+0

我正在使用Python。 – Starglider 2014-10-04 22:49:34

+0

@Starglider ...和'psycopg2'数据库驱动程序? – 2014-10-05 05:50:03

回答

5

假设你正在使用psycopg2为您的数据库驱动程序,那么cursor.description场是你想要什么:

import pprint 
import psycopg2 
conn = psycopg2.connect(''); 
curs = conn.cursor() 
curs.execute("SELECT 1 as col1, 2 as col2, 'text' as colblah"); 
pprint.pprint(curs.description) 

生产:

(Column(name='col1', type_code=23, display_size=None, internal_size=4, precision=None, scale=None, null_ok=None), 
Column(name='col2', type_code=23, display_size=None, internal_size=4, precision=None, scale=None, null_ok=None), 
Column(name='colblah', type_code=705, display_size=None, internal_size=-2, precision=None, scale=None, null_ok=None)) 

的类型代码是PostgreSQL的内部对象ID。

欲了解更多详细信息see the psycopg2 manual,它解释了如何将类型oids变成类型名称等。