Python工具类(一)—— 操作Mysql数据库

如何调用直接看__main__函数里如何调用此工具类就阔以啦!

# encoding=utf-8
import pymysql

# 导入所有Mysql配置常量,请自行指定文件
from conf.settings import *


class MysqlConnection(object):
    """
    mysql操作类,对mysql数据库进行增删改查
    """

    def __init__(self, config):
        # Connect to the database
        self.connection = pymysql.connect(**config)
        self.connection.autocommit(True)
        self.cursor = self.connection.cursor()

    def QueryAll(self, sql):
        """
        查询所有数据
        :param sql:
        :return:
        """
        # 数据库若断开即重连
        self.reConnect()

        self.cursor.execute(sql)
        return self.cursor.fetchall()

    def QueryMany(self, sql, n):
        """
        查询某几条数据数据
        :param sql:
        :return:
        """
        # 数据库若断开即重连
        self.reConnect()

        self.cursor.execute(sql)
        return self.cursor.fetchmany(n)

    def QueryOne(self, sql):
        """
        查询某几条数据数据
        :param sql:
        :return:
        """
        # 数据库若断开即重连
        self.reConnect()

        self.cursor.execute(sql)
        return self.cursor.fetchone()

    # return self.cursor.fetchone()

    def reConnect(self):
        """
        重连机制
        :return:
        """
        try:
            self.connection.ping()
        except:
            self.connection()

    def Operate(self, sql, params=None, DML=True):
        """
        数据库操作:增删改查
        DML: insert / update / delete
        DDL: CREATE TABLE/VIEW/INDEX/SYN/CLUSTER
        """
        try:
            # 数据库若断开即重连
            self.reConnect()

            with self.connection.cursor() as cursor:
                cursor.execute(sql, params)

                self.connection.commit()

        except Exception as e:
            if DML:
                # 涉及DML操作时,若抛异常需要回滚
                self.connection.rollback()
            print(e)

    def __del__(self):
        """
        MysqlConnection实例对象被释放时调用此方法,用于关闭cursor和connection连接
        """
        self.cursor.close()
        self.connection.close()


if __name__ == "__main__":
    # 初始化MysqlConnection实例对象需要传Mysql配置信息的字典
    config = {‘host‘: MYSQL_HOST, ‘charset‘: CHARSET, ‘db‘: DB, ‘user‘: USER, ‘port‘: MYSQL_PORT, ‘password‘: PASSWORD}
    msc = MysqlConnection(config)
    sql = "delete from users where username =‘%s‘" % "123456"

    print(msc.Operate(sql))