Python封装mysql数据库

 写一个MySQL的操作类,避免每次重复编写代码,开箱即用,如果老铁觉得有用,可以点个关注哦



import pymysql
# 建立一个简单的数据库操作类
class SimpleMySqlClass:
    # 函数要对数据库进行连接,并建立一个游标为操作数据库做准备
    def __init__(self, host, db_name, user, password):
        self.host = host
        self.db_name = db_name
        self.user = user
        self.password = password
        # self.port = port
        # 调用函数create_connection()对数据库进行连接
        self.connection = self.create_connection()
        # 调用函数create_cursor()生成一个游标,为操作数据库做好准备
        self.cursor = self.create_curour()
    # 建立一个数据库连接
    def create_connection(self):
        # pymysql在1.0以后的版本需要这样写
        self.connection = pymysql.connect(host=self.host, database=self.db_name,user=self.user, password=self.password)
        return self.connection
    # 建立一个游标
    def create_curour(self):
        # 通过数据库连接建立一个操作游标
        self.cursor =self.connection.cursor()
        return self.cursor
    # 执行查询
    def query_sql(self,sql):
        try:
            # 执行查询语句
            self.cursor.execute(sql)
            # 利用游标的fetchall()函数取得查询到的所有记录
            data = self.cursor.fetchall()
            # 返回记录
            return data
        except Exception:
            # 发生错误时返回有错误的SQL语句
            raise Exception('执行的SQL语句: '+sql+',出现异常,请检查')
    # 执行增、删、改相关SQL语句
    def execute(self,sql):
        try:
            # 执行增、删、改SQL语句时,返回的值是操作结果影响的记录数
            re = self.cursor.execute(sql)
            # 提交执行事务
            self.connection.commit()
            return re
        except Exception:
            # 发生错误回滚事务
            self.connection.rollback()
            # 返回-1提示执行出错
            return -1
    #     # 列出数据库中的表
    def list_tables(self):
        sql_1 = "show tables"
        try:
            self.cursor.execute(sql_1)
            table_list = self.cursor.fetchall()
            return table_list
        except Exception:
            raise Exception('执行的SQL语句:'+ sql_1 +',出现异常,请检查!')
    # 关闭连接,执行完相关的数据库操作,及时关闭连接是良好的编程习惯
    def close(self):
        self.connection.close()


# 主函数main对类进行测试
if __name__ == "__main__":
    # 对类实例化
    host = '192.168.1.32'
    mysql_obj = SimpleMySqlClass(host, 'test_db', 'root', '123')
    # 有一个数据库名字是test_db,该数据库下有一张表user_info
    # 调用类中的函数query_sql执行查询语句
    re = mysql_obj.query_sql('select * from user_info')
    # print(re) # 打印结果:(('xiaoxiao', 1), ('xiaoA', 2), ('xiaoB', 3), ('xiaoC', 4), ('xiaoD', 5))
    """
    row的打印结果:
    ('anle', 1)
    ('xiaoA', 2)
    ('xiaoB', 3)
    ('xiaoC', 4)
    ('xiaoD', 5)
    """
    for row in re:
        print("序号:",row[1],"姓名:",row[0])

    # 执行增删改的SQL语句
    add_count = mysql_obj.execute('insert into user_info values("xiaoE",6)')
    if add_count:
        print('添加成功')
    else:
        print("添加失败")

    del_count = mysql_obj.execute('delete from user_info where name = "xiaoE"')
    if del_count:
        print("删除成功")
    else:
        print("删除失败")

    # 列举数据库中的表:
    table_names = mysql_obj.list_tables()  # 打印table_names是一个元组,(('user',), ('user_info',))
    # print(table_names)
    for table in table_names:
        print(table[0])
    # 关闭数据库连接,节省计算机资源
    mysql_obj.close()

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

码农者也

你的鼓励将是我创作的最大动力

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

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

打赏作者

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

抵扣说明:

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

余额充值