我在使用psycopg2 Python模块时遇到了一些问题。我编写了一个小代码,使用psycopg2模块从PostgreSQL表中提取一些信息。我想知道表中每列的数据类型:
import os, psycopg2, getpass, sys, string
userpass = getpass.getpass()
# Connect to the database
conn = psycopg2.connect("host=hostname dbname=db user=username password=%s" % (userpass))
cur = conn.cursor()
cur.execute("SELECT * FROM database.table;")
fieldTypes = [desc[1] for desc in cur.description]
print fieldTypes
当我执行这段代码时,我得到一个整数列表(即oid)。有没有办法把它转换成更容易理解的东西(例如'str'、'int'、'bool'等等)。在
只要OID (Object Identifier)实际上是一个^{} (注册类型的OID子类型),就像您从函数^{} 获得的一样,您可以通过简单的强制转换将“OID”转换为
text
。在Postgres通常将数据类型
regtype
的值显示为text
给用户。示例:内部是OID:
^{pr2}$如果您的客户机不这样做,您可以使用显式转换强制执行:
从系统目录获取所有列的类型
现在还不清楚你到底是如何检索这些类型的。请考虑以下查询以获取完整信息:
注意,^{} 显示包含修饰符的类型。在
相关问题 更多 >
编程相关推荐