如何创建配置了 time_zone 的 mysql+pymysql 引擎?

How do I create mysql+pymysql engine with time_zone configured?

我使用 SQLAlchemy 和 pymysql 驱动程序连接到 MySQL 实例。此 MySQL 实例将其时区配置为 UTC。

现在,我想执行一个长 SQL 查询(它是一个硬编码的 SQL 脚本...),它大量使用针对时间戳列的日期函数。我希望这个 SQL 在我所在国家/地区的本地时区下执行(即 +09:00)。

问题

查看如何通过 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'"})