我有以下查询
cursor.execute(
"""
SELECT transform(row_to_json(t)) FROM
(select * from table
where a = %s
and b = %s limit 1000) t;
"""
, (a_value, b_value))
运行records = cursor.fetchall()
将返回一个大小为1元组的列表。
无论如何只返回一个列表列表?
我问这个是因为我想将列表列表转换为numpy矩阵,并且循环将单例元组转换为列表很慢。
答案 0 :(得分:8)
当一行多时,可以使用以下代码
const blob = new Blob([JSON.stringify(parsedData)], {type: 'application/json'});
const url = URL.createObjectURL(blob);
const a = Object.assign(document.createElement('a'), {download: 'new.json', href: url});
document.body.appendChild(a);
a.click();
答案 1 :(得分:3)
作为快速修复,您可以返回一个数组:
cursor.execute("""
select array_agg(transform(row_to_json(t)))
from (
select * from table
where a = %s and b = %s
limit 1000
) t;
""", (a_value, b_value))
由于Psycopg将Postgresql数组调整为Python列表,因此只需获取该列表:
records = cursor.fetchall()[0][0]
我想有可能将cursor
子类化为返回列表而不是元组,但如果你不处理庞大的集合,我认为这不值得麻烦。
答案 2 :(得分:1)
您也可以使用此代码
result = cur.fetchall()
x = map(list, list(result))
x = sum(x, [])