python3 flask使用连接池连接数据库实例

 更新时间:2023年08月07日 09:43:24   作者: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连接数据库的资料请关注脚本之家其它相关文章!

相关文章

  • pytorch-autograde-计算图的特点说明

    pytorch-autograde-计算图的特点说明

    这篇文章主要介绍了pytorch-autograde-计算图的特点,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-05-05
  • ubuntu安装mysql pycharm sublime

    ubuntu安装mysql pycharm sublime

    本文给大家汇总介绍了在Ubuntu中如何安装mysql+pycharm+sublime的方法,有相同需求的小伙伴可以参考下
    2018-02-02
  • Python入门之三角函数sin()函数实例详解

    Python入门之三角函数sin()函数实例详解

    这篇文章主要介绍了Python入门之三角函数sin()函数实例详解,分享了相关实例,具有一定参考价值,需要的朋友可以了解下。
    2017-11-11
  • 3个 Python 编程技巧

    3个 Python 编程技巧

    这篇文章主要介绍 Python 编程技巧,我们知道,字典的本质是哈希表,本身是无法排序的,但 Python 3.6 之后,字典是可以按照插入的顺序进行遍历的,这就是有序字典,其中的原理,可以阅读为什么 Python3.6 之后字典是有序的。本文也会介绍该内容,需要的朋友可以参考一下
    2021-10-10
  • django允许外部访问的实例讲解

    django允许外部访问的实例讲解

    今天小编就为大家分享一篇django允许外部访问的实例讲解,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-05-05
  • Python PyQt5学习之样式设置详解

    Python PyQt5学习之样式设置详解

    这篇文章主要为大家详细介绍了Python PyQt5中样式设置的相关资料,例如为标签添加背景图片、为按钮添加背景图片、设置窗口透明等,感兴趣的可以学习一下
    2022-12-12
  • Python configparser模块常用方法解析

    Python configparser模块常用方法解析

    这篇文章主要介绍了Python configparser模块常用方法解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-05-05
  • python脚本使用阿里云slb对恶意攻击进行封堵的实现

    python脚本使用阿里云slb对恶意攻击进行封堵的实现

    这篇文章主要介绍了python脚本使用阿里云slb对恶意攻击进行封堵的实现,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-02-02
  • python爬虫容易学吗

    python爬虫容易学吗

    在本篇文章里,小编给大家分享的是一篇关于python爬虫是否容易学的相关知识点内容,有兴趣的朋友们可以阅读下。
    2020-06-06
  • python实现ping命令小程序

    python实现ping命令小程序

    这篇文章主要介绍了python实现ping命令小程序的方法,帮助大家更好的理解和使用python,感兴趣的朋友可以了解下
    2020-12-12

最新评论