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)
    ```
    热爱技术,享受生活,感谢推荐!
  • 相关阅读:
    汽车最强大脑ECU和单片机是什么关系
    自动驾驶汽车操作系统简述
    怎样区分线性和非线性_线性与非线性的区别(线性分析、线性模型)
    ADAS最全整理
    carsim2016 与 MATLAB2018 联合仿真send to simulink后编译不成功解决方法
    基于Jenkins的.Net Core应用自动部署--学习一
    vue学习一
    sql server解析xml字段
    C# string[] 转list<long>
    C++神奇算法库——#include<algorithm>
  • 原文地址:https://www.cnblogs.com/zdqc/p/15408476.html
Copyright © 2011-2022 走看看