• pymysql封装


    import pymysql
    
    
    class MysqlC:
    
        def __init__(self, host, user, password, database):
            self.con = None
            self.arguments = {
                "host": host,
                "user": user,
                "password": password,
                "database": database,
                "charset": 'utf8'
            }
    
        def post(self, sql):
            with self:
                try:
                    data = self.cursor.execute(sql)
                    self.con.commit()
    
                    return data
                except Exception as e:
                    self.con.rollback()
                    return e
    
        def get(self, sql, one=None):
            with self:
                try:
                    self.cursor.execute(sql)
                    if one:
                        return self.cursor.fetchone()
                    else:
                        return self.cursor.fetchall()
                except Exception as e:
                    return e
    
        def __enter__(self):
            if self.con is None:
                try:
                    self.con = pymysql.connect(**self.arguments)
                    self.cursor = self.con.cursor(pymysql.cursors.DictCursor)
                except Exception:
                    raise "数据库连接失败!"
    
        def __exit__(self, exc_type, exc_val, exc_tb):
            self.cursor.close()
            self.con.close()
            self.con = None
    
    
    if __name__ == '__main__':
        mysql = MysqlC('123', 'root', 'z21', 'white_ip')
    
        w = mysql.get("select * from  user")
        print(w)
    
    
    
    
    #基于mysql连接池
    import pymysql
    from dbutils.pooled_db import PooledDB
    
    
    class MysqlC:
    
        def __init__(self, host, user, password, db):
            self.pool = PooledDB(
                creator=pymysql,  # 使用链接数据库的模块
                maxconnections=200,  # 连接池允许的最大连接数,0和None表示不限制连接数
                mincached=10,  # 初始化时,链接池中至少创建的链接,0表示不创建
                blocking=True,  # 连接池中如果没有可用连接后,是否阻塞等待。True,等待;False,不等待然后报错
                ping=0,
                host=host,
                port=3306,
                user=user,
                password=password,
                database=db,
                charset='utf8'
            )
    
    
        def post(self, sql):
            with self:
                try:
                    data = self.cursor.execute(sql)
                    self.con.commit()
    
                    return data
                except Exception as e:
                    self.con.rollback()
                    return e
    
        def get(self, sql, one=None):
            with self:
                try:
                    self.cursor.execute(sql)
                    if one:
                        return self.cursor.fetchone()
                    else:
                        return self.cursor.fetchall()
                except Exception as e:
                    return e
    
        def __enter__(self):
            self.con = self.pool.connection()
            self.cursor = self.con.cursor(pymysql.cursors.DictCursor)
    
        def __exit__(self, exc_type, exc_val, exc_tb):
            self.cursor.close()
            self.con.close()
    
    
    if __name__ == '__main__':
        mysql = MysqlC('12193', 'root', 'zb51', 'white_ip')
    
        w = mysql.get("select * from  user")
        print(w)
    ```
  • 相关阅读:
    JAVA日报
    剑指 Offer 31. 栈的压入、弹出序列
    剑指 Offer 30. 包含min函数的栈
    剑指 Offer 29. 顺时针打印矩阵
    20210426日报
    20210423日报
    20210422日报
    20210421日报
    20210420日报
    20210419日报
  • 原文地址:https://www.cnblogs.com/wdyjx/p/15408476.html
Copyright © 2020-2023  润新知