gpt4 book ai didi

python - sqlalchemy + MySQL 连接超时

转载 作者:太空狗 更新时间:2023-10-29 22:30:13 26 4
gpt4 key购买 nike

我有一个使用 sqlalchemy 与 MySQL 数据库交互的守护进程。由于交互很少,连接容易超时。我试图通过在创建数据库引擎时设置各种标志来解决这个问题,例如pool_recycle=3600,但似乎没有任何帮助。

为了帮助我调试问题,我将本地 mysql 服务器的超时设置为 10 秒,并尝试了以下程序。

import time
import sqlalchemy

engine = sqlalchemy.engine.create_engine("mysql://localhost")

while True:
connection = engine.connect()
result = connection.execute("SELECT 1")
print result.fetchone()
connection.close()
time.sleep(15)

令人惊讶的是,我不断收到如下异常:

sqlalchemy.exc.OperationalError: (OperationalError) (2006, 'MySQL server has gone away')

但是,如果我删除 connection.close() 的调用,问题就会消失。这里发生了什么?为什么每次调用 connect() 时 sqlalchemy 都不尝试建立新连接?

我将 Python 2.7.3 与 sqlalchemy 0.9.8 和 MySQL 5.5.40 一起使用。

最佳答案

the document mention:

MySQL features an automatic connection close behavior,
for connections that have been idle for eight hours or more. To circumvent having this issue, use the pool_recycle option which controls the maximum age of any connection:

engine = create_engine('mysql+mysqldb://...', pool_recycle=3600)

您可以在调用 create_engine 时输入“pool_recycle”参数。

关于python - sqlalchemy + MySQL 连接超时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27494366/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com