如何在Python中打印查询结果,包括列名
打印PostgreSQL查询结果时,我只看到结果值,我希望看到列名和结果值如何在Python中打印查询结果,包括列名,python,postgresql,psycopg2,Python,Postgresql,Psycopg2,打印PostgreSQL查询结果时,我只看到结果值,我希望看到列名和结果值 postgreSQL_select_Query = "SELECT epic,timestamp FROM market_data_historic s1 WHERE timestamp = (SELECT MAX(timestamp) FROM market_data_historic s2 WHERE s1.epic = s2.epic)" cursor.execute(postgreSQL_select_
postgreSQL_select_Query = "SELECT epic,timestamp FROM market_data_historic s1 WHERE timestamp = (SELECT MAX(timestamp) FROM market_data_historic s2 WHERE s1.epic = s2.epic)"
cursor.execute(postgreSQL_select_Query)
# Close the connection
result=(cursor.fetchall())
for row in result:
print (row)
这是我得到的结果:
('CC.D.LCO.USS.IP', datetime.datetime(2019, 11, 13, 22, 0))
('IX.D.DAX.DAILY.IP', datetime.datetime(2019, 7, 23, 4, 0))
('KB.D.ELECTY.DAILY.IP', datetime.datetime(2020, 1, 24, 16, 0))
('CS.D.ALUMINIUM.TODAY.IP', datetime.datetime(2019, 7, 23, 1, 0))
('CS.D.NZDCAD.TODAY.IP', datetime.datetime(2020, 1, 24, 21, 0))
('CS.D.CADCNH.TODAY.IP', datetime.datetime(2020, 1, 16, 8, 0))
我怎样才能让它变成这样:
(epic:'CC.D.LCO.USS.IP',timestamp: datetime.datetime(2019, 11, 13, 22, 0))
(epic:'IX.D.DAX.DAILY.IP',timestamp: datetime.datetime(2019, 7, 23, 4, 0))
(epic:'KB.D.ELECTY.DAILY.IP',timestamp: datetime.datetime(2020, 1, 24, 16, 0))
(epic:'CS.D.ALUMINIUM.TODAY.IP',timestamp: datetime.datetime(2019, 7, 23, 1, 0))
(epic:'CS.D.NZDCAD.TODAY.IP',timestamp: datetime.datetime(2020, 1, 24, 21, 0))
(epic:'CS.D.CADCNH.TODAY.IP',timestamp: datetime.datetime(2020, 1, 16, 8, 0))
尝试游标的属性
:
描述查询结果的只读属性。它是一系列列
实例,每个实例按顺序描述一个结果列。对于不返回行的操作,或者如果游标尚未通过execute*()
方法调用操作,则该属性为None
为了与DB-API兼容,可以将每个对象解包为7项序列:以这种方式返回的属性如下所示。有关更多详细信息和其他可用属性,请查看列
文档
:返回的列的名称name
:列的PostgreSQL OID键入\u code
:以字节为单位的列的实际长度display\u size
:服务器上与此列关联的列的大小(以字节为单位)internal_size
:类型为精度
的列中有效位数的总数<代码>无用于其他类型数值
:在scale
类型的列中小数部分的小数位数计数<代码>无用于其他类型NUMERIC
:始终null\u ok
,因为不容易从libpq中检索None
result = cursor.fetchall()
columns = [desc[0] for desc in cursor.description]
for row in result:
print (dict(zip(columns, row)))
或者,您可以使用或
另见