【问题标题】:How do I create mysql+pymysql engine with time_zone configured?如何创建配置了 time_zone 的 mysql+pymysql 引擎?
【发布时间】:2019-12-15 07:15:16
【问题描述】:

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

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

问题

  • 当你用pymysql驱动做引擎时,是否可以设置服务器时区以外的time_zone?
    • 或者至少在某些连接上?

【问题讨论】:

    标签: mysql sqlalchemy timezone pymysql


    【解决方案1】:

    查看如何通过 Custom DBAPI connect() arguments,例如如何通过 SQLAlchemy 部分您正在尝试做的事情。

    在 pymysql repo 中有一个你想要的开放功能请求:Allow specifiying a timezone for connections

    pymysql.connections.Connection 对象接受一个名为 init_command 的参数,文档声明:

    建立连接时运行的初始 SQL 语句。

    一位贡献者在讨论该问题时提供了以下示例:

    init_command="SET SESSION time_zone='+00:00'"
    

    所以你的create_engine 可能看起来像这样:

    engine = create_engine(..., connect_args={"init_command": "SET SESSION time_zone='+09:00'"})
    

    【讨论】:

      猜你喜欢
      • 2018-03-26
      • 2017-09-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-04-15
      • 2017-09-26
      • 2017-10-18
      相关资源
      最近更新 更多