我无法弄清楚如何让SQLAlchemy以UTC返回时间。我有一个带有timezone=True
日期时间字段的模型。我知道Postgres会在UTC内部存储所有时区,但是当日期恢复时,它会转移到我所在的时区。当SQLAlchemy从Postgres检索它时,python datetime对象将tzinfo
设置为psycopg2.tz.FixedOffsetTimezone(offset=-240, name=None)
。我知道一旦我从SQLalchemy中获取日期,我就可以转换为UTC,但这听起来很乏味,因为我将在代码中的所有地方使用日期时间。
答案 0 :(得分:1)
您确定postgres数据库没有设置时区吗?登录postgres并运行:
test_db=> show timezone;
TimeZone
---------
US/Central
这将导致SQLAlchemy的所有输出都具有中心时区。你想确保这个值是这样的:
test_db=> show timezone;
TimeZone
----------
UTC
答案 1 :(得分:0)
默认情况下,SQLAlchemy将返回UTC时间。你应该删除timezone = True(或将其设置为False)。