如何创建配置了 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
)。
问题
- 当你用 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'"})
我使用 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'"})