首页 > 数据库 >Flask连接数据库

Flask连接数据库

时间:2024-06-18 10:58:14浏览次数:12  
标签:__ Flask 数据库 pymysql cursor conn app 连接 连接池

Flask连接数据库

创建数据库连接池

安装dbutilspymysql

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

使用池和不使用池的区别

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

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

标签:__,Flask,数据库,pymysql,cursor,conn,app,连接,连接池
From: https://blog.csdn.net/AZURE060606/article/details/139685143

相关文章

  • TCP_CONNECTION_ESTAB_02:验证DUT打开多个被动套接字并将它们连接到远程套接字
    测试目的:本测试用例的目的是验证DUT(被测试设备)是否能够同时打开多个TCP被动套接字,并能够对通过这些套接字接收到的TCP连接请求进行响应。当DUT接收到多个带有SYN标志位设置为1的TCP段时,DUT应该能够为每个请求打开一个TCP被动套接字,并向每个请求源发送一个同时包含SYN和ACK......
  • 数据库连表方式
    数据库连表方式   内连接:inner、innerjoin   外连接:outerjoin       左外连接:leftouterjoin       左连接:leftjoin       右外连接rightouterjoin       右连接:rightjoin   全连接fulljoin、union准备现在有2张表,A......
  • 攀登不止,华为数据库论文入选SIGMOD 2024,技术创新再谱新篇
    本文分享自华为云社区《攀登不止,华为数据库论文入选SIGMOD2024,技术创新再谱新篇》,作者:GaussDB数据库。6月9日-14日,2024年数据管理国际会议SIGMOD(ACMSIGMOD/PODSInternationalConferenceonManagementofData)在智利首都圣地亚哥召开。SIGMOD与ICDE、VLDB并称数据库领域三大......
  • 17.零代码八爪鱼采集器数据采集与数据导出——如何导出不同格式数据和数据推送到数据
    首先,多数情况下免费版本的功能,已经可以满足绝大多数采集需求,想了解八爪鱼采集器版本区别的详情,请访问这篇帖子: 3.无代码爬虫八爪鱼采集器工具介绍——个人版本、团队版本的适用性_八爪鱼采集器有单机版本吗-CSDN博客免费版八爪鱼采集器下载​​https://affiliate.bazhuayu.c......
  • 数据库做不完全恢复198
     1.数据库处于mount模式SQL>startmount 2.执行不完全恢复#!/bin/bash./etc/profile.~/.bash_profileexportORACLE_SID=mydbexportORACLE_BASE=/u01/app/oracleexportORACLE_HOME=/u01/app/oracle/product/11.2.0.4/db_1rmantarget/log=/home/oracle/my_sc......
  • 网卡-热点搜索不到或者无法连接问题
    大屏设置网卡开启热点后,经常收到反馈,手机端无法搜索到大屏热点、或者手机连接大屏热点失败这类问题一般有以下几类情况:1.物理网卡IP与热点网卡IP相同2.热点网卡IP,非正常热点IP(192.168.137.X)热点IP我们一般定为192.168.137.X,192.168.137.X是一个保留的IPv4地址范围,通常被用作......
  • 数据库-数据定义和操纵-DDL语言的使用
    创建一个数据库:   createdatabase数据库名;选择数据库:    use数据库名;创建表    createtable表名(        );添加字段;         ALTERTABLE表名ADD新字段名数据类型[约束条件][FIRST|AFTER已存在字段名......
  • 达梦数据库执行SQL
     1.找到数据库安装路径 #路径ps-ef|grepdmserver进入/bin目录执行命令:#启动服务./disql 2.Linux内执行SQL回车执行SQL后会跟着2,3,4,等等记得SQL上加上;然后回车。建表:#新增users表。ID自增CREATETABLEusers(idINTP......
  • MySQL数据库管理补充
    目录一.数据表高级操作1.克隆表2.清空表3.创建临时表4.创建外键约束外键的定义主键表和外键表的理解4.1.创建主从表4.2.主从表中插入数据4.3.主从表中删除数据4.4.删除外检约束二.数据库用户管理1.新建用户2.查看用户信息3.重命名用户4.删除用户5.修改当前登......
  • c语言连接两个字符串
    在C语言中,连接两个字符串可以使用标准库函数strcat。这个函数将一个字符串添加到另一个字符串的末尾。使用strcat时,需要确保目标字符串有足够的空间来容纳源字符串,否则可能会导致缓冲区溢出。下面是strcat函数的基本用法示例:#include<stdio.h>#include<string.h>......