SqlAlchemy在保存之前将UTC DateTime转换为本地时间

西罗科

我有以下情况:-带有字段的Postgres后端

timestamp without time zone
  • 在保存日期时间值之前,它看起来像:2014-09-29 06:00:00 + 00:00
  • 然后,我从数据库加载同一行,其值为:2014-09-29 09:00:00

因此,在数据库中存储的日期不再是6AM ..而是9AM-它在我的本地时区转换。

我不明白发生了什么。为什么保存的日期转换为本地日期?

谢谢。

编辑

因此,在@univerio的回复之后,我尝试了以下操作:我通过执行以下操作从日期时间中删除了tzinfo:

.replace(tzinfo = None) 

现在,日期已正确保存-不会将其调整为当地时间。我不太明白为什么会这样,所以在有人解释的情况下,我暂时不提问题。

谢谢。

宇宙

我怀疑正在发生的事情是您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该文档并不明显如何执行此操作;我必须阅读一些不同的文档并连接点:

  1. 有关的SQLAlchemy文档connect_args允许您将参数直接传递给DBAPIconnect()
  2. 上的psycopg2文档connect,它告诉您可以传递给libpq的其他参数
  3. options参数上的libpq文档,该文件可让您在与libpq连接时传递命令行选项
  4. 有关-c命令行开关的PostgreSQL文档,该命令行开关允许您修改配置设置
  5. 最后,关于timezone您可以设置客户端设置的PostgreSQL客户端文档

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

PHP将本地时间转换为UTC DateTime

来自分类Dev

Android / Joda时间-将dateTime转换为我的本地DateTime

来自分类Dev

Android / Joda时间-将dateTime转换为我的本地DateTime

来自分类Dev

将本地时间转换为 UTC 时间

来自分类Dev

将字符串转换为 DateTime 格式而不将其转换为您的本地时间

来自分类Dev

如何将日期,时间和UTC偏移量转换为本地DateTime

来自分类Dev

.NET Noda时间将特定时区的本地DateTime转换为UTC

来自分类Dev

如何将UTC时间转换为设备的本地时间?

来自分类Dev

PHP将UTC时间转换为本地时间

来自分类Dev

如何将UTC时间转换为设备的本地时间?

来自分类Dev

如何将UTC时间转换为设备的本地时间?

来自分类Dev

pandas.to_datetime()如何从本地时区转换为UTC Unix时间戳?

来自分类Dev

在python中将本地时间转换为utc

来自分类Dev

在Go中将UTC转换为“本地”时间

来自分类Dev

将本地dateTime转换为R中的UTC

来自分类Dev

pytz-将UTC和时区转换为本地时间

来自分类Dev

使用NSDateFormatter将UTC转换为本地时间

来自分类Dev

将UTC时间戳转换为熊猫本地时区问题

来自分类Dev

将UTC日期从服务器转换为本地时间

来自分类Dev

将UTC时间戳转换为本地日期

来自分类Dev

将UTC GMT + 0200转换为本地时间

来自分类Dev

将未来的本地日期时间转换为 UTC

来自分类Dev

将 java Calendar 对象从本地时间转换为 UTC

来自分类Dev

将日期时间转换为本地python

来自分类Dev

MongoDB UTC日期时间格式转换为本地时间

来自分类Dev

在JavaScript中将Python UTC时间戳转换为本地时间

来自分类Dev

在JavaScript中将Python UTC时间戳转换为本地时间

来自分类Dev

将Unix时间转换为DateTime

来自分类Dev

将Datetime转换为Unix时间戳

Related 相关文章

热门标签

归档