python3 flask使用连接池连接数据库实例
作者:icheeringsoul
这篇文章主要为大家介绍了python3 flask使用连接池连接数据库实例,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
python使用连接池
在真实的线上环境连接数据库一般都是要使用连接池的,连接池统一管理数据库连接,可以提高应用性能。
python数据库连接池可以使用dbutils和PySQLPool但是这两个库似乎都只支持python2不支持
python3,最后折腾了半天,Python3最后我使用的是sqlalchmey里的连接池工具sqlalchemy.pool,把连接池应用到flask,我使用的是下面的方式,个人认为比较合理
示例
from flask import Flask, _app_ctx_stack, current_app import MySQLdb import sqlalchemy.pool as pool app = Flask(__name__) app.config.from_pyfile('config.py') @app.teardown_appcontext def close_database_connection(error=None): con = getattr(_app_ctx_stack, 'database', None) if con: con.close() def getconn(db_conf=None): if db_conf is None: db_conf = current_app.config['DB_CONFIG'] conn = MySQLdb.connect(**db_conf) return conn mypool = pool.QueuePool(getconn, max_overflow=10, pool_size=5) app.db_pool = mypool def get_db(): ctx = _app_ctx_stack.top con = getattr(ctx, 'database', None) if con is None: con = current_app.db_pool.connect() ctx.database = con return con @app.route('/') def index(): con = get_db() cursor = con.cursor(cursorclass=MySQLdb.cursors.DictCursor) rv = cursor.execute('select 1') return str(rv) if __name__ == "__main__": app.run(host='0.0.0.0', debug=True, port=5001)
因为sqlalchemy里有连接池模块,直接使用下面的方式在需要的地方导入db我猜测也是连接池的管理方式,未测试
from flask_sqlalchemy import SQLAlchemy db = SQLAlchemy() db.init_app(app) ....
有需要的朋友可以借鉴参考下,更多关于python3 flask连接数据库的资料请关注脚本之家其它相关文章!