在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中)。
您当前在应用程序中呈现视图的方式是正确的,您应该继续这样做。
原则上,有一种方法可以在PostgreSQL中将您的视图呈现为JSON,但这样做是没有任何意义的,因为渲染视图是您可以从数据库在您的体系结构中的角色获得的最远的。