使用SQLAlchemy(MySQL)和Flask时,MySQL连接不可用

时间:2014-11-12 16:38:10

标签: python mysql flask sqlalchemy flask-sqlalchemy

我有时会收到此错误(有时可以,有时错了):

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')

如何避免该错误?

谢谢!

1 个答案:

答案 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()