用python对数据库的增删查改进行类的封装(完善版)

用python对数据库的增删查改进行类的封装(完善版),第1张

用python对数据库的增删查改进行类的封装(完善版)

又是一个完善版本,学一点东西就添加一些上去,不断改进。先附上关于异常处理的结构方法,便于进行代码阅读:

异常处理结构:

try:
    可能出现异常的代码块
expect:
    出现异常后所运行的代码块
else:
    未出现异常所运行的代码块
finally:
    无论是否出现异常,都会运行的代码块

数据库:

import pymysql  #导入mysql包
class Sql():    #创建类
    def __init__(self):     #定义构造方法
        self.host = input('host:')
        self.port = int(input('port:'))
        self.name = input('aconunt:')
        self.pwd = input('password:')
        self.db = input('database:')
        self.charset = input('charset:')

    def UI(self):   #定义界面
        a = input('1查询  2、修改 3、退出(输入1or2or3选择)>>')  # 将输入的值转换为int型
        if a.isnumeric():       #判断输入是否为数字
            if int(a) == 1:
                self.sql_query()  # a的值为1的时候执行查询函数
            elif int(a) == 2:
                self.sql_change()  # a的值为2的时候执行修改函数
            elif int(a) == 3:
                exit()
                print('已退出!')  # a的值为3的时候退出
            else:
                print('您的输入有误,请重新输入。')
        else:
            print('您的输入有误,请重新输入。')

    def __sql_conn(self):   #定义连接方法
        try:        #异常处理让sql语句后可得到相应提示
            conn = pymysql.connect(host=self.host, port=self.port, user=self.name, password=self.pwd, database=self.db,
                                   charset=self.charset)
            cur = conn.cursor()     #获取数据库连接对象和游标
            return conn, cur        #返回
        except Exception:       #异常处理的返回值,Exception表示常规的错误类
            print('连接信息有误,请重新输入。')

    def sql_query(self):        #定义查询方法
        conn, cur = self.__sql_conn()  #通过连接方法直接获取连接对象和游标对象,在之前发布的两篇文章中也有相同的用法
        while True:   #使用死循环,让用户在sql语句输入错误的情况下也能重新输入
            try:        #异常处理
                sql = input('请输入 *** 作:')
                cur.execute(sql)    #执行sql语句执行
                rest = cur.fetchall()   #返回输出结果,次出页未指定输出返回结果的数量,上一篇文章中有提及相应的方法,此处不再赘述
            except Exception:       #异常处理
                print('Sql语句错误!')       #异常处理
                continue        #重新开始循环
            else:               #异常处理
                for select in rest:     #以下是对查询结果格式的调整,在之前的文章中有提及,此处也不在赘述
                    print(*select)
                a = input('1、继续 *** 作  2、返回  3、退出(输入1or2选择)>>')
                if int(a) == 1:
                    continue
                elif int(a) == 2:
                    self.UI()
                else:
                    cur.close()
                    conn.close()
                    break


    def sql_change(self):
        conn, cur = self.__sql_conn()
        while True:
            try:
                sql = input('请输入 *** 作:')
                cur.execute(sql)
                conn.commit()
            except Exception:
                print('sql语句错误,请重新输入。')
                continue
            else:
                a = input('1、继续 *** 作  2、返回  3、退出(输入1or2选择)>>')
                if int(a) == 1:
                    continue
                elif int(a) == 2:
                    self.UI()
                else:
                    cur.close()
                    conn.close()
                    break



if __name__ == '__main__':
    act = Sql()             #实例化类   
    act.UI()                #用实例对象调取UI方法

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zaji/5625342.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-15
下一篇 2022-12-15

发表评论

登录后才能评论

评论列表(0条)

保存