Compatible with MySQL connection under python

# 导入pymysql模块
import pymysql
"""

# 添加下面两句,那么3可以向下兼容2
pymysql.install_as_MySQLdb()
import MySQLdb
 
# 创建一个连接对象,再使用创建游标
con = pymysql.connect(host='127.0.0.1', port=3306, user='root', passwd='1234', db='mysql')
cursor = con.cursor()


"""

class dataMysql(object):
    # 定义要执行的SQL语句
    """
       1 创建表一般不用原生sql
       2 对数据库执行查询操作
       3 对数据库增加和修改数据
       4 对数据库删除操作
    """

    def __init__(self, ip=None, user=None, password=None, database=None):
        self.conn = pymysql.connect(host=ip, user=user, password=password, database=database, charset="utf8")
        self.cursor = self.conn.cursor()

    def change_data_mysql(self, sql, parameter, get=None, data=None):
        """
        修改数据,增,修改,删除可共用方法
        :param cursor:
        :param sql:
        :return:
        """
        result = ''
        try:
            if data:
                self.cursor.executemany(sql, data)  # 使用executemany做批量处理
            else:
                self.cursor.execute(sql, parameter)
            if get:
                result = self.cursor.fetchall()
            else:
                self.conn.commit()  # 提交修改数据
            last_id = self.cursor.lastrowid  # 变动数据的id
        except Exception as e:
            self.conn.rollback()
            print(e)
        return result

    def get_data_from_mysql(self, sql, parameter):
        """
        从数据库查看数据
        :return:
        """
        try:
            ret = self.cursor.execute(sql, parameter)  # 返回受影响行数
            if ret:
                result = self.cursor.fetchall()  # fetchall/fetchone 取数据
            else:
                result = '没有获取到数据'
            self.conn.commit()  # 提交修改数据
        except Exception as e:
            result = e
        return result

    def insert_data_mysql(self, sql, parameter):
        """
        向数据库插入数据 # sql = "insert into  tb_heros (hname,hgender,hcomment,is_delete,hbook_id) values(%s,%s,%s,%s,%s);"
        # data = ((hname,hgender,hcomment,is_delete,hbook_id),(hname,hgender,hcomment,is_delete,hbook_id))
        cursor.executemany(sql, data)  # 使用executemany做批量处理
        :param cursor:
        :return:
        """
        try:
            self.cursor.execute(sql, parameter)
            # cursor.executemany(sql, 'data')  # 使用executemany做批量处理
            self.conn.commit()  # 插入数据
            last_id = self.cursor.lastrowid  # 插入的这条数据的id
            print(last_id)
        except Exception as e:
            self.conn.rollback()
            print(e)

    def delete_data_mysql(self, sql, parameter):
        """
        删除数据
        :param cursor:
        :param sql:
        :return:
        """
        try:
            self.cursor.execute(sql, parameter)
            self.conn.commit()  # 提交修改数据
        except Exception as e:
            self.conn.rollback()
            print(e)

    def update_data_mysql(self, sql, parameter):
        """
        更新数据sql="update tb_heros set is_delete=%s where id=%s;" % (1,25)
        :param cursor:
        :param sql:
        :return:
        """
        try:
            self.cursor.execute(sql, parameter)
            self.conn.commit()  # 提交修改数据
        except Exception as e:
            self.conn.rollback()
            print(e)


obj_mysql = dataMysql(ip="127.0.0.1", user="root", password="itcast", database="django_demo")
sql = "select * from tb_heros where hname= %s and is_delete=%s;"
parameter = ['郭靖', 0]
# sql = "select * from tb_heros where hname= %s and is_delete=%s;"
# sql="delete from tb_heros where id=%s;"
# parameter = [24]

result = obj_mysql.get_data_from_mysql(sql, parameter=parameter)
result2 = obj_mysql.change_data_mysql(sql, parameter=parameter, get=True, data=None)
print(result)
print(result2)

 

Guess you like

Origin blog.csdn.net/weixin_42322206/article/details/101175730