Python Sqlalchemy 查询数据返回时间类型的问题?
- 通过下面代码可以返回 JSON 数据,但是
datetime
类型字段变成别的样子了该如何解决?
engine = create_engine("mysql+pymysql://root:root@127.0.0.1/test")
with engine.connect() as connection:
result = connection.execute(text("select * from data limit 10"))
return [dict(row) for row in result.mappings()]
- 变成了
Sat, 22 Jan 2022 21:20:26 GMT
这样的格式
回复
1个回答

test
2024-07-01
手动转一下
from datetime import datetime
# ...
result = connection.execute(text("select * from data limit 10"))
data = []
for row in result:
row_dict = {key: value.strftime('%Y-%m-%d %H:%M:%S') if isinstance(value, datetime) else value for key, value in row.items()}
data.append(row_dict)
return data
如果希望在整个应用程序中都使用相同的时间格式,也可以将其作为配置项进行设置,可以这样搞
import datetime
# 设置全局时间格式
datetime.datetime.strftime = lambda self, fmt: self.strftime(fmt) if isinstance(self, datetime.datetime) else str(self)
回复

适合作为回答的
- 经过验证的有效解决办法
- 自己的经验指引,对解决问题有帮助
- 遵循 Markdown 语法排版,代码语义正确
不该作为回答的
- 询问内容细节或回复楼层
- 与题目无关的内容
- “赞”“顶”“同问”“看手册”“解决了没”等毫无意义的内容