django - 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 环境变量(os.environ
如果需要从 python 中进行)。您也可以发出ALTER DATABASE
orALTER ROLE
并默认设置时区,如链接文档中所述PGTZ
,但我倾向于避免这样做,因为很容易忘记为新数据库/用户执行此操作(并且它也仅适用于新连接;长时间运行的将具有连接时默认的 TZ)。
推荐阅读
- r - Problem with post hoc comparison using Robust ANOVA in R
- css - angular issue in scss file
- conda - gfortran not running on OSX dyld: Library not loaded: @rpath/libgfortran.3.dylib
- c# - Walking main character by WSAD and rotation camera with mouse
- sql-server - 临时表问题并合并两个存储过程的结果
- java - @PostConstruct 未在 Spring 测试中运行
- python - 如何在 Python 中调用作为参数传递的函数
- azure-devops - 管道超过超时后有没有办法做某事?
- api - Shopware 6: Query country states using the store api
- c++ - C ++ windows ui自动化:无法列出所有子窗口