又是一个完善版本,学一点东西就添加一些上去,不断改进。先附上关于异常处理的结构方法,便于进行代码阅读:
异常处理结构:
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方法
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)