如何解决Django postgres连接,为psycopg2设置时区
在Django settings.py中,我有TIME_ZONE = 'Asia/Tbilisi'
我的postgres也有相同的时区
并分别正常工作。
但是,在Django中,当我运行原始查询时,例如:
from django.db import connection
...
cursor = connection.cursor()
cursor.execute("select localtimestamp(0)")
res = cursor.fetchall()
这显示带有UTC时区的日期时间。
这可能是由psycopg2
连接设置引起的吗?因为:
print( connection.cursor().connection.get_parameter_status("TimeZone") )
显示:UTC
。
问题:如何更改此连接设置并设置所需的时区?
解决方法
首先打开一个SET timezone TO 'Asia/Tbilisi';
查询,或者在打开连接之前设置PGTZ environment variable(如果需要从python进行设置,请使用os.environ
)。您还可以发出ALTER DATABASE
或ALTER ROLE
并默认设置时区,如PGTZ
的链接文档中所述,但我倾向于避免这种情况,因为这样做很容易忘记对于新的数据库/用户(&它也仅适用于新的连接;长时间运行的数据库/用户将具有连接时默认的TZ)。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。