首页 > 解决方案 > 将 PostgreSQL 格式化为 JSON

问题描述

我正在阅读 PostgreSQL,并希望最终将其转换为漂亮的 JSON。PostgreSQL 查询的输出包含例如“Decimal('value')”,我正试图清除它。不幸的是,这些值在这个过程中消失了,我不知道如何重写它,所以它们仍然存在。

代码:

columns = ("parameter", "timestamp", "epoch")
inputRecords = []
for row in cursor.fetchall():
    inputRecords.append(dict(zip(columns,row)))
inputRecordsCleaned = [tuple(str(item) for item in t) for t in inputRecords]
inputRecordsJson = json.dumps(inputRecordsCleaned, indent=2)

输出:

inputRecords = [{'parameter': Decimal('-0.9'), 'timestamp': datetime.datetime(2020, 3, 11, 12, 16, 48), 'epoch': 1583929008}]

inputRecordsCleaned = [('parameter', 'timestamp', 'epoch')]

预期输出:

inputRecordsCleaned = [('parameter': '-0.9', 'timestamp': '2020, 3, 11, 12, 16, 48', 'epoch': '1583929008')]

标签: pythonpostgresqlpsycopg2

解决方案


我认为您需要的理解是:

inputRecordsCleaned = [{k: str(v) for k,v in record.items()} for record in inputRecords]

使用给定的样本,它给出:

[{'parameter': '-0.9', 'timestamp': '2020-03-11 12:16:48', 'epoch': '1583929008'}]

推荐阅读