码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • Flask连接数据库


    Flask连接数据库

    创建数据库连接池

    安装dbutils和pymysql

    pip install dbutils
    pip install pymysql
    

    创建连接池

    from dbutils.pooled_db import PooledDB
    import pymysql
    
    pool = PooledDB(
        creator=pymysql,  # 使用连接数据库的模块
        maxconnections=5,  # 限制最大连接数
        mincached=5,  # 初始化时,连接池中至少创建的空闲连接,0表示不创建
        maxcached=5,  # 最多限制连接
        maxshared=3,  # 连接池中最大共享连接数量,0和None表示全部共享
        blocking=True,  # 池中没有可用连接后是否阻塞等待
        maxusage=None,  # 一个链接最多被重复使用的次数,None表示无限制
        setsession=[],  # 开始会话前执行的命令列表。如:["set datestyle to ...", "set time zone ..."]
        ping=0,     # ping MySQL服务器检查服务是否可用
        host='127.0.0.1',
        port=3306,
        user='root',
        passwd='7777',
        db='flaskdemo',
        charset='utf8',
    )
    

    在视图函数中使用

    import pymysql
    from flask import Flask
    from pool import pool
    
    app = Flask(__name__)
    
    
    @app.route('/')
    def index():
        conn = pool.connection()
        cursor = conn.cursor(pymysql.cursors.DictCursor)
        insert_sql = 'insert into users(name,age) values(%s,%s)'
        cursor.execute(insert_sql, ('张三', 18))
        conn.commit()
        return 'ok'
    
    
    if __name__ == '__main__':
        app.run(debug=True)
    

    不使用连接池

    @app.route('/')
    def index():
        conn = pymysql.connect(
            user='root',
            password="7777",
            host='127.0.0.1',
            database='flaskdemo',
            port=3306,
            autocommit=False)
        cursor = conn.cursor(pymysql.cursors.DictCursor)
        sql = 'select * from users where id >%s'
        cursor.execute(sql, 1)
        time.sleep(1)
        res = cursor.fetchall()
        print(res)
        conn.close()
        return jsonify(res)
    
    if __name__ == '__main__':
        app.run()
    

    image-20240614162829643

    使用池和不使用池的区别

    连接数越少,连接池的性能收益越低,甚至远低于不使用池

    但是连接池可以复用,且方便管理,因此还是推荐使用连接池来管理数据

  • 相关阅读:
    编译[Bug]——too few arguments for template template parameter “Tuple“ detected
    VS Code多语言笔记本扩展插件 Polyglot Notebooks
    使用Python生成多种不同类型的Excel图表
    键盘映射笔记
    sol2 配置到centos
    JS中BigInt的使用
    已解决 Java Error: Exception in thread ‘main‘ java.lang.ClassNotFoundException
    【单片机毕业设计】【mcuclub-hj-005-3】基于单片机的空气质量(天然气或煤气)检测的设计
    vue3在setup中获取DOM元素
    R语言使用原生包(基础导入包、graphics)中的boxplot函数可视化箱图(box plot)
  • 原文地址:https://blog.csdn.net/AZURE060606/article/details/139685143
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号