【问题标题】:SQLAlchemy pool connection closed exceptionSQLAlchemy 池连接关闭异常
【发布时间】:2015-07-06 08:22:05
【问题描述】:

任何人都知道为什么每当 SQLAlchemy 池中的连接关闭 (conn.close()) 时,我都会收到此异常:

ERROR:Exception during reset or similar       
Traceback (most recent call last):
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/pool.py", line 631, in _finalize_fairy
    fairy._reset(pool)
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/pool.py", line 771, in _reset
    pool._dialect.do_rollback(self)
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/pool.py", line 83, in do_rollback
    dbapi_connection.rollback()
File "/usr/local/lib/python2.7/dist-packages/sqlalchemy/pool.py", line 850, in __getattr__
    return getattr(self.connection, key)
AttributeError: 'Connection' object has no attribute 'rollback'

我正在使用 SQLAlchemy==1.0.6 连接到 mysql,这是我的代码的一部分:

self.__engine = create_engine("mysql+mysqldb://%s:%s@%s/%s?charset=utf8&use_unicode=0" %(config['db_user'], config['db_passwd'], config['db_host'], config['db']), pool_recycle=3600)
self.__mypool = pool.QueuePool(self.__getConn, pool_size=config['db_pool_size'])
conn = self.__mypool.connect()
results = conn.execute(statement, values)
conn.close()

【问题讨论】:

  • this 回答。
  • 问题与您提供的答案不同,但无论如何感谢。我已经弄清楚了问题所在。我可以回答我的问题以供其他人参考。

标签: python sqlalchemy


【解决方案1】:

似乎在当前版本的 SQLAlchemy 中(在某些版本中工作),队列池已经集成到 create_engine() 中。它不喜欢单独创建 QueuePool()。以下更改解决了该问题:

self.__mypool = create_engine("mysql+mysqldb://%s:%s@%s/%s?charset=utf8&use_unicode=0" %(config['db_user'], config['db_passwd'], config['db_host'], config['db']), pool_size=config['db_pool_size'], pool_recycle=3600)
conn = self.__mypool.connect()
results = conn.execute(statement, values)
conn.close()

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-03-09
    • 2022-01-12
    • 2011-07-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-17
    • 1970-01-01
    相关资源
    最近更新 更多