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连接数据库的资料请关注脚本之家其它相关文章!
相关文章
详解pycharm的python包opencv(cv2)无代码提示问题的解决
这篇文章主要介绍了详解pycharm的python包opencv(cv2)无代码提示问题的解决,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧2021-01-01Python实现批量修改图片格式和大小的方法【opencv库与PIL库】
这篇文章主要介绍了Python实现批量修改图片格式和大小的方法,结合实例形式分析了Python基于opencv库与PIL库针对图片的读写、转换相关操作技巧,需要的朋友可以参考下2018-12-12
最新评论