我有时会收到此错误(有时可以,有时错了):
sqlalchemy.exc.OperationalError: (OperationalError) MySQL Connection not available.
使用session.query
我正在使用Flask和SQLAlchemy(MySQL)编写一个简单的服务器。我的app.py
是这样的:
Session = sessionmaker(bind=engine)
session = Session()
@app.route('/foo')
def foo():
try:
session.query(Foo).all()
except Exception:
session.rollback()
更新
我还在另一个文件中创建了新的session
,并在app.py
Session = sessionmaker(bind=engine)
session = Session()
def foo_helper(): #call in app.py
session.query(Something).all()
更新2
我的engine
:
engine = create_engine('path')
如何避免该错误?
谢谢!
答案 0 :(得分:1)
使用SQLAlchemy'create_engine'函数时,确保'pool_recycle选项'的值小于MYSQL的wait_timeout值。
engine = create_engine("mysql://username:password@localhost/myDatabase", pool_recycle=3600)
尝试使用scoped_session
进行会话:
from sqlalchemy.orm import scoped_session, sessionmaker
session = scoped_session(sessionmaker(autocommit=False, autoflush=False, bind=engine))
并在检索数据后关闭/删除会话。
session.query(Foo).all()
session.close()