SQLAlchemy Postgresql查询自动映射表时将日期时间转换为unix时间戳

2024-09-29 22:00:26 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在开发一个Flask应用程序,该应用程序映射在Postgresql中构建的现有数据模型。 我已经使用automap映射了表,可以正确查询对象:

Base = automap_base()
Base.prepare(db.engine, reflect=False)
Object1 = Base.classes.table1

我现在正在查询table1,需要检索一个类似timeseries的列表。对象具有一个数字值和一个时间戳postgresql格式的datetime

当我运行查询并尝试使用jsonify将结果导出为json时

query = session.query(Object1.value, Object1.createtime).order_by(Object1.createtime.desc())
return jsonify(str(query.all()))

我得到了这个结果:

"[(5543157, datetime.datetime(2021, 4, 3, 7, 29, 53)), (5543156, datetime.datetime(2021, 4, 3, 7, 29, 37))]"

如何取回unix时间戳而不是datetime.datetime格式?我希望避免通过循环来转换每个元素,因为查询可能检索到超过1M个元素


Tags: 对象应用程序元素flaskbasedatetimepostgresql格式
1条回答
网友
1楼 · 发布于 2024-09-29 22:00:26

不要直接选择列,而是选择产生所需值的表达式。在本例中,可以使用^{}生成Unix时间戳

from sqlalchemy import func
# ...
query = session.query(
   Object1.value, func.date_part('EPOCH', Object1.createtime)).order_by(Object1.createtime.desc())
# ...

SQLAlchemy的这一面(我自己有一段时间没有使用过)是由this answer提供的

相关问题 更多 >

    热门问题