Формат PostgreSQL в JSON - PullRequest
       10

Формат PostgreSQL в JSON

0 голосов
/ 11 марта 2020

Я читаю PostgreSQL и хотел бы в конце концов преобразовать это в хороший JSON. Вывод запроса PostgreSQL содержит, например, «Десятичное число ('значение')", которое я пытаюсь очистить. К сожалению, значения исчезают во время этого процесса, и я не уверен, как переписать его, чтобы они остались.

Код:

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')]

Ответы [ 2 ]

1 голос
/ 11 марта 2020

decimal.Decimal можно легко преобразовать в str с. Вы можете поставить str на json.dumps как default, то есть:

import datetime
import json
from decimal import Decimal
inputRecords = [{'parameter': Decimal('-0.9'), 'timestamp': datetime.datetime(2020, 3, 11, 12, 16, 48), 'epoch': 1583929008}]
records_json = json.dumps(inputRecords, default=str)
print(records_json)

Вывод:

[{"parameter": "-0.9", "timestamp": "2020-03-11 12:16:48", "epoch": 1583929008}]
1 голос
/ 11 марта 2020

Я думаю, что понимание, которое вам нужно, это:

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'}]
...