在(python3)中,psycopg2将结果返回为字符串而不是字典

问题描述 投票:0回答:1

在psycopg2中,有一种方法可以让游标以字符串而不是JSON(或字符串)格式而不是字典对象的形式返回结果吗?

# connect to database 
conn = psycopg2.connect(host=host, port=port, user=usr, password=passwd, dbname=dbn) 
cur = conn.cursor(cursor_factory=RealDictCursor)
# CREATE table and INSERT 
cur.execute("CREATE TABLE t1(c char, i int);")
cur.execute("INSERT INTO t1(c, i) VALUES ('a', 1), ('b', 2), ('c', 3)"); 
# Execute query 
cur.execute("SELECT COUNT(*) FROM t1;") 
output1 = cur.fetchall() 
cur.execute("SELECT * FROM t1;")
output2 = cur.fetchall()

Expect - 格式为JSON或字符串的对象列表

output1 - ['{"count": 3}']
output2 - ['{"c": "a", "i": 1}', '{"c": "b", "i": 2}', '{"c": "c", "i": 3}']

实际 - 字典对象列表

output1 - [{'count': 3}]
output2 - [{'c': 'a', 'i': 1}, {'c': 'b', 'i': 2}, {'c': 'c', 'i': 3}]

我目前正在使用JSON模块将每个对象转换为JSON,但我想知道是否有更简单的方法(即在psycopg2中)。

python-3.x postgresql psycopg2
1个回答
1
投票

您当前在应用程序中呈现视图的方式是正确的,您应该继续这样做。

原则上,有一种方法可以在PostgreSQL中将您的视图呈现为JSON,但这样做是没有任何意义的,因为渲染视图是您可以从数据库在您的体系结构中的角色获得的最远的。

© www.soinside.com 2019 - 2024. All rights reserved.