尝试构建 JSON 文件但出现错误 concat datetime to string
Trying construc JSON file but got error concat datetime to string
我对 python 没有太多经验,我正在尝试 运行 数据库中的查询,其中 returns 我的字段是数字、状态、打开日期,到期日期和描述,但即使在编码时我也遇到错误,下面是我的代码,他们可以帮助我解决我做错的事情
json_requisicoes.append({'Numero Requisicao:'+行[0], 'Status:'+行[1], 'Data de Abertura:'+行[2], 'Prazo:' +行[3], 'Descricao:'+行[4]})
TypeError: 只能将 str(不是“datetime.datetime”)连接到 str
import mysql.connector
import json
from datetime import datetime
import array as arr
class DateTimeEncoder(json.JSONEncoder):
def default(self, obj):
if isinstance(obj, (datetime.datetime, datetime.date, datetime.time)):
return obj.isoformat()
elif isinstance(obj, datetime.timedelta):
return (datetime.datetime.min + obj).time().isoformat()
return super(DateTimeEncoder, self).default(obj)
def GetRequisicoes():
json_requisicoes = []
select_requisicoes = ("""SELECT * FROM data_req
WHERE DATE(sla_due_date_req) <= DATE(NOW())
AND status_req NOT LIKE 'Pendente'
ORDER BY n_req ASC;""")
cursor = conn.cursor()
cursor.execute(select_requisicoes)
result = cursor.fetchall()
for row in result:
json_requisicoes.append({'Numero Requisicao:'+row[0], 'Status:'+row[1], 'Data de Abertura:'+row[2], 'Prazo:'+row[3], 'Descricao:'+row[4]})
with open("./output_requisicoes.json", 'w', encoding='utf-8') as f:
json.dump(json_requisicoes, f, ensure_ascii=False, indent=4, cls=DateTimeEncoder)
cursor.close()
您不应该连接字符串。你应该附加字典。字典在键和值之间有 :
,而不是 +
。
您还需要将日期时间格式化为字符串,因为无法在 JSON 中表示原始日期时间对象。您可以为此使用 isoformat()
方法。
for row in result:
json_requisicoes.append({
'Numero Requisicao': row[0],
'Status': row[1],
'Data de Abertura': row[2].isoformat(),
'Prazo': row[3],
'Descricao': row[4]
})
我对 python 没有太多经验,我正在尝试 运行 数据库中的查询,其中 returns 我的字段是数字、状态、打开日期,到期日期和描述,但即使在编码时我也遇到错误,下面是我的代码,他们可以帮助我解决我做错的事情
json_requisicoes.append({'Numero Requisicao:'+行[0], 'Status:'+行[1], 'Data de Abertura:'+行[2], 'Prazo:' +行[3], 'Descricao:'+行[4]})
TypeError: 只能将 str(不是“datetime.datetime”)连接到 str
import mysql.connector
import json
from datetime import datetime
import array as arr
class DateTimeEncoder(json.JSONEncoder):
def default(self, obj):
if isinstance(obj, (datetime.datetime, datetime.date, datetime.time)):
return obj.isoformat()
elif isinstance(obj, datetime.timedelta):
return (datetime.datetime.min + obj).time().isoformat()
return super(DateTimeEncoder, self).default(obj)
def GetRequisicoes():
json_requisicoes = []
select_requisicoes = ("""SELECT * FROM data_req
WHERE DATE(sla_due_date_req) <= DATE(NOW())
AND status_req NOT LIKE 'Pendente'
ORDER BY n_req ASC;""")
cursor = conn.cursor()
cursor.execute(select_requisicoes)
result = cursor.fetchall()
for row in result:
json_requisicoes.append({'Numero Requisicao:'+row[0], 'Status:'+row[1], 'Data de Abertura:'+row[2], 'Prazo:'+row[3], 'Descricao:'+row[4]})
with open("./output_requisicoes.json", 'w', encoding='utf-8') as f:
json.dump(json_requisicoes, f, ensure_ascii=False, indent=4, cls=DateTimeEncoder)
cursor.close()
您不应该连接字符串。你应该附加字典。字典在键和值之间有 :
,而不是 +
。
您还需要将日期时间格式化为字符串,因为无法在 JSON 中表示原始日期时间对象。您可以为此使用 isoformat()
方法。
for row in result:
json_requisicoes.append({
'Numero Requisicao': row[0],
'Status': row[1],
'Data de Abertura': row[2].isoformat(),
'Prazo': row[3],
'Descricao': row[4]
})