python之pymysql库创建mysql公共工具类,方便调用

工具类

import pymysql
from logaid import log
import time


class MySQLDB:
    def __init__(self, host, port, user, passwd: str, db, charset: str):
        self.host = host
        self.port = port
        self.user = user
        self.passwd = passwd
        self.db = db
        self.charset = charset
        self.cursor = None
        self.connection = None

    def connect(self):
        """连接到 MySQL 数据库"""
        try:
            self.connection = pymysql.Connect(
                host=self.host,
                port=self.port,
                user=self.user,
                passwd=self.passwd,
                db=self.db,
                charset=self.charset
            )
            self.cursor = self.connection.cursor()
            return True
        except Exception as e:
            time.sleep(6)
            log.error(f'Connect mysql is failed. error{e}')
            return False

    def close(self):
        """关闭数据库连接"""
        if self.cursor:
            self.cursor.close()
        if self.connection:
            self.connection.close()

    def execute(self, query, params=None) -> bool:
        """
        原生 sql 执行语句
        """
        self.connect()
        try:
            if self.cursor:
                self.cursor.execute(query, params)
                self.connection.commit()
                return True
        except Exception as e:
            self.connection.rollback()
            log.error(f'Execute is failed. error:{e}. query:{query}')
        finally:
            self.close()
        return False

    def query(self, sql):
        """
        查询,返回结果
        :param sql: SQL 查询语句
        :return: 查询结果
        """
        if self.execute(sql):
            return self.cursor.fetchall()
        return False

    def insert(self, sql, value):
        """
        插入,返回记录 ID
        :param sql: SQL 插入语句
        :param value: 插入语句的参数
        :return: bool|int
        """
        if self.execute(sql, value):
            insert_id = self.cursor.lastrowid
            return insert_id
        return False

    def update(self, sql, value=None) -> bool:
        """
        更新
        :param sql: SQL 更新语句
        :param value: 更新语句的参数
        :return: bool
        """
        return self.execute(sql, value)

    def exist(self, sql) -> bool:
        """
        是否存在
        :param sql: sql 查询语句
        :return: bool
        """
        if self.execute(sql):
            return self.cursor.fetchone()[0] > 0
        return True

if __name__ == '__main__':
    a = MySQLDB('127.0.0.1',3306,'admin','admin','abc','utf8mb4')
    sql = f"select count(*) from login where source='{1}';"
    sql_result = a.exist(sql)
    print(sql_result)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

云霄IT

感谢感谢!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值