zoukankan      html  css  js  c++  java
  • 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)
    ```
    热爱技术,享受生活,感谢推荐!
  • 相关阅读:
    userdir 希望用户能够以http://X.X.X.X/~username 方式来访问自己的网页
    var_export() 函数的使用
    mb_detect_encoding — 检测字符的编码
    详解PHP fsockopen的使用方法
    jQuery 返回顶部
    Mysql函数
    sql where 1=1和 0=1 的作用
    Numpy基础学习(三)
    Numpy 中的矩阵
    Numpy数组的全通用函数
  • 原文地址:https://www.cnblogs.com/zdqc/p/15408476.html
Copyright © 2011-2022 走看看