我怀疑正在发生的事情是您datetime
正确存储了感知s,但是由于该列为,所以没有时区回读它WITHOUT TIME ZONE
。每个Postgresql连接都有一个关联的时区,该时区默认为系统时区,因此,当您检索特定的时区时,TIMESTAMP
它会datetime
在系统时区中作为天真返回。由于这个原因,我总是建议TIMESTAMP WITH TIME ZONE
改为存储。
如果要将sqlAlchemy中的连接时区更改为UTC,请在创建引擎时执行以下操作:
engine = create_engine("...", connect_args={"options": "-c timezone=utc"})
这应该使您datetime
以UTC天真地读回该值。
编辑:@Peter该文档并不明显如何执行此操作;我必须阅读一些不同的文档并连接点: