Python Sqlalchemy 查询数据返回时间类型的问题?

作者站长头像
站长
· 阅读数 13
  • 通过下面代码可以返回 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()]

Python Sqlalchemy 查询数据返回时间类型的问题?

  • 变成了 Sat, 22 Jan 2022 21:20:26 GMT 这样的格式

Python Sqlalchemy 查询数据返回时间类型的问题?

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