python - 如何在 cur.execute 中使用 python 返回有效的时间戳值
问题描述
在使用 python 日期时间格式读取和返回 sql 查询结果时,包括时间戳值中的 T。请您提出您的建议。
con = mysql.connector.connect(host=host, user=username, password=password, database=db_name,port=port)
cur = con.cursor()
sqlquery = "select * from testtable"
cur.execute(sqlquery)
result_output = [dict((cur.description[i][0], value) for i, value in
enumerate(row)) for row in cur.fetchall()]
return JsonResponse({"result":result_output}, safe=False)
Print result : `[{'tabId': 1, 'tab_int': 100, 'tab_char': 'test5', 'tab_decimal': Decimal('99.54'), 'tab_date': datetime.date(2021, 8, 16), 'tab_timestamp': datetime.datetime(2021, 8, 16, 23, 30, 48)}]`
返回结果
{“结果”:[{“tabId”:1,“tab_int”:100,“tab_char”:“test5”,“tab_decimal”:“99.54”,“tab_date”:“2021-08-16”,“tab_timestamp” :“2021-08-16T23:30:48”}]}
所需的输出是"tab_timestamp": "2021-08-16 23:30:48"
解决方案
您可以遍历响应数据并重新格式化您想要的类型。要以任何您想要使用的方式格式化数据/日期时间对象strftime
(https://docs.python.org/3/library/datetime.html#strftime-and-strptime-format-codes):
from decimal import Decimal
import datetime
data = [{'tabId': 1, 'tab_int': 100, 'tab_char': 'test5',
'tab_decimal': Decimal('99.54'), 'tab_date': datetime.date(2021, 8, 16),
'tab_timestamp': datetime.datetime(2021, 8, 16, 23, 30, 48)}]
for key, value in data[0].items():
if isinstance(value, datetime.datetime):
data[0][key] = data[0][key].strftime("%Y-%m-%d %H:%M:%S")
elif isinstance(value, datetime.date):
data[0][key] = data[0][key].strftime("%Y-%m-%d")
print(data)
推荐阅读
- python - Scrapy-mongodb 将数据保存在数组数组中,而不是单个数组
- sockets - 在哪里包含凭据以连接到邮递员中的 websocket 服务器?
- reactjs - 反应路由器 - 受保护的路由组件不起作用
- python - python 字典键是字符串,值是浮点数列表;如何过滤截止?
- django - 与 Office 365 Outlook 的 Django smtp 连接
- cassandra - 减少卡桑德拉墓碑
- flutter - 相机图像未添加到颤动的图像列表中
- angular - Angular 在 Mat-Table 中使用另一个值
- angular - PrimeNg 全局过滤器
- arrays - 解析一个包含多个元素的 json 文件