Flask - 使用MySQL数据池
Posted 你与断剑皆遗憾
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Flask - 使用MySQL数据池相关的知识,希望对你有一定的参考价值。
helper.py
1 import pymysql 2 3 from settings import Config 4 5 def connect(): 6 conn = Config.POOL.connection() 7 cursor = conn.cursor(cursor=pymysql.cursors.DictCursor) # 以 字典的方式 显示 8 return conn,cursor 9 10 11 def connect_close(conn,cursor): 12 cursor.close() 13 conn.close() 14 15 def fetch_all(sql,args): 16 conn,cursor = connect() 17 18 cursor.execute(sql, args) 19 record_list = cursor.fetchall() 20 connect_close(conn,cursor) 21 22 return record_list 23 24 25 def fetch_one(sql, args): 26 conn, cursor = connect() 27 cursor.execute(sql, args) 28 result = cursor.fetchone() 29 connect_close(conn, cursor) 30 31 return result 32 33 34 def insert(sql, args): 35 conn, cursor = connect() 36 row = cursor.execute(sql, args) 37 conn.commit() 38 connect_close(conn, cursor) 39 return row
settings.py
1 from DBUtils.PooledDB import PooledDB, SharedDBConnection 2 import pymysql 3 # 下载 DBUtils : pip3 install DBUtils 4 class Config(object): 5 SALT = b"sdf1123df" 6 SECRET_KEY = ‘asdf123sdfsdfsdf‘ 7 MAX_CONTENT_LENGTH = 1024 * 1024 * 7 8 9 10 POOL = PooledDB( 11 creator=pymysql, # 使用链接数据库的模块 12 maxconnections=6, # 连接池允许的最大连接数,0和None表示不限制连接数 13 mincached=2, # 初始化时,链接池中至少创建的空闲的链接,0表示不创建 14 maxcached=5, # 链接池中最多闲置的链接,0和None不限制 15 maxshared=3, 16 # 链接池中最多共享的链接数量,0和None表示全部共享。PS: 无用,因为pymysql和MySQLdb等模块的 threadsafety都为1,所有值无论设置为多少,_maxcached永远为0,所以永远是所有链接都共享。 17 blocking=True, # 连接池中如果没有可用连接后,是否阻塞等待。True,等待;False,不等待然后报错 18 maxusage=None, # 一个链接最多被重复使用的次数,None表示无限制 19 setsession=[], # 开始会话前执行的命令列表。如:["set datestyle to ...", "set time zone ..."] 20 ping=0, 21 # ping MySQL服务端,检查是否服务可用。# 如:0 = None = never, 1 = default = whenever it is requested, 2 = when a cursor is created, 4 = when a query is executed, 7 = always 22 host=‘127.0.0.1‘, 23 port=3306, 24 user=‘root‘, 25 password=‘123456‘, 26 database=‘db2‘, 27 charset=‘utf8‘ 28 )
views.py
1 @account.route(‘/login/‘, methods=[‘GET‘, ‘POST‘]) 2 def login(): 3 ‘‘‘ 4 登陆 5 :return: 6 ‘‘‘ 7 if request.method == ‘GET‘: 8 return render_template(‘login.html‘) 9 10 username = request.form.get(‘user‘) 11 password = request.form.get(‘pwd‘) 12 13 pwd_md5 = md5(password) 14 15 data = helper.fetch_one("select id,nickname from userinfo where user=%s and pwd =%s", (username, pwd_md5)) 16 17 if not data: 18 return render_template(‘login.html‘, error=‘用户名密码错误‘) 19 20 # session[‘user_info‘] = data 21 session[‘user_info‘] = {‘id‘: data[‘id‘], ‘nickname‘: data[‘nickname‘]} 22 23 return redirect(‘/home/‘)
以上是关于Flask - 使用MySQL数据池的主要内容,如果未能解决你的问题,请参考以下文章
在终端和 Django 或 Flask 的代码模块中使用 python 多处理池