让SQLAlchemy以UTC返回时间

时间:2015-05-12 14:52:33

标签: sqlalchemy timezone

我无法弄清楚如何让SQLAlchemy以UTC返回时间。我有一个带有timezone=True日期时间字段的模型。我知道Postgres会在UTC内部存储所有时区,但是当日期恢复时,它会转移到我所在的时区。当SQLAlchemy从Postgres检索它时,python datetime对象将tzinfo设置为psycopg2.tz.FixedOffsetTimezone(offset=-240, name=None)。我知道一旦我从SQLalchemy中获取日期,我就可以转换为UTC,但这听起来很乏味,因为我将在代码中的所有地方使用日期时间。

2 个答案:

答案 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)。