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

标签 mysql sqlalchemy timezone pymysql

我使用 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/

相关文章:

python - SQLAlchemy 将表名更改为有两个下划线

php - 从日期时间查找时区

php - 双引号内的单引号php

python - 如何将行号列添加到 SqlAlchemy 查询?

SQL - 按行对排序

python - flask 中的 sqlalchemy : how to "delete .. where ... "?

php - 试图理解 PHP 中的时间戳和时区

timezone - apache-airflow 1.9 默认时区设置为非 utc

ios - 如何制作 "required"UITextFields?

mysql - MySQL 中如何汇总多个列