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()
使用池和不使用池的区别
连接数越少,连接池的性能收益越低,甚至远低于不使用池
但是连接池可以复用,且方便管理,因此还是推荐使用连接池来管理数据
标签:__,Flask,数据库,pymysql,cursor,conn,app,连接,连接池 From: https://blog.csdn.net/AZURE060606/article/details/139685143