【发布时间】:2019-12-28 15:36:55
【问题描述】:
我正在使用 Flask SQLAlchemy 连接到我的 mysql 数据库,但它的默认 wait_timeout 为 120 秒,所以在我查询我的用户并且网络有一段时间没有使用后,我得到一个错误
(2013, 'Lost connection to MySQL server during query')
我的 db.py
的重要部分app = Flask(__name__)
db = SQLAlchemy(app)
app.config['SQLALCHEMY_DATABASE_URI'] = 'mysql+pymysql://urltomyserver'
app.config['SQLALCHEMY_POOL_RECYCLE'] = 10
app.config['SQLALCHEMY_POOL_TIMEOUT'] = 120
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False
db.init_app(app)
if __name__ == 'createdb':
db.reflect()
db.drop_all()
db = SQLAlchemy(app)
还有我的views.py
@core.route('/')
def index():
userzy = sftpuser.query.all()
return render_template('index.html', userzy=userzy)
#I'D LIKE TO CLOSE MY CONNECTION HERE
我在def index中返回模板后尝试了这些
db.session.close()
db.close()
db.dispose()
db.session.close()
db.engine.dispose()
db.session.commit()
还有这个
@app.teardown_appcontext
def teardown_db(error):
db.session.close()
db.engine.dispose()
但这对我没有太大帮助,任何人都知道解决方案,为什么即使我设置了池,我也会不断出错?
【问题讨论】:
-
最近的 Flask-SQLAlchemy 版本引入了配置键 SQLALCHEMY_ENGINE_OPTIONS 来影响引擎的创建。检查这个stackoverflow.com/a/58697109/1161591 和这个stackoverflow.com/a/58504084/1161591 看看它是如何使用的
标签: python mysql python-3.x flask flask-sqlalchemy