首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >SSCursor上的SqlAlchemy / PyMysql连接超时

SSCursor上的SqlAlchemy / PyMysql连接超时
EN

Stack Overflow用户
提问于 2017-11-12 19:06:42
回答 1查看 1.7K关注 0票数 1

我正在使用sqlalchemy连接mysql数据库。我的代码看起来像这样

代码语言:javascript
复制
engine = sqlalchemy.create_engine(sqlalchemy.engine.url.URL(**url), connect_args={'cursorclass': SSCursor})
conn = engine.connect()

由于需要一次从DB获取大量数据,因此我使用了SSCursor。我做了一些调查,我创建了一个场景,连接在60秒后丢失。它是由简单的代码模拟的,我添加了timeout(60)。我得到了如下的回溯:

代码语言:javascript
复制
Exception during reset or similar
Traceback (most recent call last):
  File "/usr/local/lib/python3.5/dist-packages/sqlalchemy/pool.py", line 687, in _finalize_fairy
    fairy._reset(pool)
  File "/usr/local/lib/python3.5/dist-packages/sqlalchemy/pool.py", line 829, in _reset
    pool._dialect.do_rollback(self)
  File "/usr/local/lib/python3.5/dist-packages/sqlalchemy/dialects/mysql/base.py", line 1598, in do_rollback
    dbapi_connection.rollback()
  File "/usr/local/lib/python3.5/dist-packages/pymysql/connections.py", line 788, in rollback
    self._execute_command(COMMAND.COM_QUERY, "ROLLBACK")
  File "/usr/local/lib/python3.5/dist-packages/pymysql/connections.py", line 1067, in _execute_command
    raise err.InterfaceError("(0, '')")
pymysql.err.InterfaceError: (0, '')
Exception ignored in: <bound method MySQLResult.__del__ of <pymysql.connections.MySQLResult object at 0x7fed3af0d828>>
Traceback (most recent call last):
  File "/usr/local/lib/python3.5/dist-packages/pymysql/connections.py", line 1332, in __del__
  File "/usr/local/lib/python3.5/dist-packages/pymysql/connections.py", line 1434, in _finish_unbuffered_query
  File "/usr/local/lib/python3.5/dist-packages/pymysql/connections.py", line 983, in _read_packet
  File "/usr/local/lib/python3.5/dist-packages/pymysql/connections.py", line 1014, in _read_bytes
AttributeError: 'NoneType' object has no attribute 'settimeout'

我不能弄清楚,如何确保连接在不同的所需时间后超时。我尝试在connect_args中使用connect_timeout,但行为没有任何变化。

我应该做些什么来确保连接?

谢谢

EN

回答 1

Stack Overflow用户

发布于 2018-05-31 17:51:19

您应该更改MySQL服务器选项,增加net_read_timeoutmax_allowed_packet的值

https://dev.mysql.com/doc/refman/5.5/en/error-lost-connection.html

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47248047

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档