zoukankan      html  css  js  c++  java
  • Flask使用mysql数据池

    helper.py

    import pymysql
    
    from settings import Config
    
    def connect():
        conn = Config.POOL.connection()
        cursor = conn.cursor(cursor=pymysql.cursors.DictCursor)  # 以 字典的方式 显示
        return conn,cursor
    
    
    def connect_close(conn,cursor):
        cursor.close()
        conn.close()
    
    def fetch_all(sql,args):
        conn,cursor = connect()
    
        cursor.execute(sql, args)
        record_list = cursor.fetchall()
        connect_close(conn,cursor)
    
        return record_list
    
    
    def fetch_one(sql, args):
        conn, cursor = connect()
        cursor.execute(sql, args)
        result = cursor.fetchone()
        connect_close(conn, cursor)
    
        return result
    
    
    def insert(sql, args):
        conn, cursor = connect()
        row = cursor.execute(sql, args)
        conn.commit()
        connect_close(conn, cursor)
        return row
    View Code

    settings.py

    from DBUtils.PooledDB import PooledDB, SharedDBConnection
    import pymysql
    # 下载  DBUtils : pip3 install DBUtils
    class Config(object):
        SALT = b"sdf1123df"
        SECRET_KEY = 'asdf123sdfsdfsdf'
        MAX_CONTENT_LENGTH = 1024 * 1024 * 7
    
    
        POOL = PooledDB(
            creator=pymysql,  # 使用链接数据库的模块
            maxconnections=6,  # 连接池允许的最大连接数,0和None表示不限制连接数
            mincached=2,  # 初始化时,链接池中至少创建的空闲的链接,0表示不创建
            maxcached=5,  # 链接池中最多闲置的链接,0和None不限制
            maxshared=3,
            # 链接池中最多共享的链接数量,0和None表示全部共享。PS: 无用,因为pymysql和MySQLdb等模块的 threadsafety都为1,所有值无论设置为多少,_maxcached永远为0,所以永远是所有链接都共享。
            blocking=True,  # 连接池中如果没有可用连接后,是否阻塞等待。True,等待;False,不等待然后报错
            maxusage=None,  # 一个链接最多被重复使用的次数,None表示无限制
            setsession=[],  # 开始会话前执行的命令列表。如:["set datestyle to ...", "set time zone ..."]
            ping=0,
            # 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
            host='127.0.0.1',
            port=3306,
            user='root',
            password='123456',
            database='db2',
            charset='utf8'
        )
    View Code

    views.py

    @account.route('/login/', methods=['GET', 'POST'])
    def login():
        '''
        登陆
        :return:
        '''
        if request.method == 'GET':
            return render_template('login.html')
    
        username = request.form.get('user')
        password = request.form.get('pwd')
    
        pwd_md5 = md5(password)
    
        data = helper.fetch_one("select id,nickname from userinfo where user=%s and pwd =%s", (username, pwd_md5))
    
        if not data:
            return render_template('login.html', error='用户名密码错误')
    
        # session['user_info'] = data
        session['user_info'] = {'id': data['id'], 'nickname': data['nickname']}
    
        return redirect('/home/')
    View Code
  • 相关阅读:
    UVa 1349 (二分图最小权完美匹配) Optimal Bus Route Design
    UVa 1658 (拆点法 最小费用流) Admiral
    UVa 11082 (网络流建模) Matrix Decompressing
    UVa 753 (二分图最大匹配) A Plug for UNIX
    UVa 1451 (数形结合 单调栈) Average
    UVa 1471 (LIS变形) Defense Lines
    UVa 11572 (滑动窗口) Unique Snowflakes
    UVa 1606 (极角排序) Amphiphilic Carbon Molecules
    UVa 11054 Wine trading in Gergovia
    UVa 140 (枚举排列) Bandwidth
  • 原文地址:https://www.cnblogs.com/fu-yong/p/9201443.html
Copyright © 2011-2022 走看看