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
View Code

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     )
View Code

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/')
View Code

猜你喜欢

转载自www.cnblogs.com/zhaohuhu/p/9218075.html