我使用 SQLAlchemy 和 pymysql 驱动程序连接到 MySQL 实例。此 MySQL 实例的时区配置为 UTC。
现在,我想执行一个长 SQL 查询(它是一个硬编码的 SQL 脚本...),它大量使用针对时间戳列的日期函数。我希望此 SQL 在我所在国家/地区的本地时区(即 +09:00
)下执行。
问题
- 当您使用 pymysql 驱动程序制作引擎时,是否可以设置服务器时区以外的 time_zone ?
- 或者至少在某些连接上?
最佳答案
查看如何通过Custom DBAPI connect() arguments例如如何克服您正在尝试执行的 SQLAlchemy 部分。
pymysql 存储库中有一个开放的功能请求,可以满足您的需求:Allow specifiying a timezone for connections .
pymysql.connections.Connection
对象接受一个名为 init_command
的参数,文档对此进行了说明:
Initial SQL statement to run when connection is established.
贡献者在该问题的讨论中提供了以下示例:
init_command="SET SESSION time_zone='+00:00'"
所以你的create_engine
可能看起来像这样:
engine = create_engine(..., connect_args={"init_command": "SET SESSION time_zone='+09:00'"})
关于mysql - 如何创建配置了 time_zone 的 mysql+pymysql 引擎?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57397982/