【发布时间】:2018-12-25 03:38:19
【问题描述】:
我使用 Postgres 的 row_to_json() 函数将数据检索为 json 对象,以便像使用 python 字典一样处理结果。
conn = psycopg2.connect("<My_DB_DSN>")
cur = conn.cursor(cursor_factory=psycopg2.extras.DictCursor)
query_sql = "SELECT row_to_json(row) FROM (SELECT id, name FROM products) row;"
cur.execute(query_sql)
results = cur.fetchall()
print(results)
这会导致:
[ [{"id": 1, "name": "Bob"}],
[{"id": 2, "name": "Susan"}]
]
我期待这个结果:
[ {"id": 1, "name": "Bob"},
{"id": 2, "name": "Susan"}
]
知道为什么我会得到第一个结果以及如何解决这个问题吗?
在 postgres 的命令行中运行 SQL 查询将按预期返回 json:
{"id": 1, "name": "Bob"},
{"id": 2, "name": "Susan"}
【问题讨论】:
-
更改查询以使用数组将所有行作为单个字符串返回? SELECT array(select row_to_json(row) FROM (SELECT id, product FROM products) 行);"
标签: python json postgresql psycopg2