python连接数据库是实际开发中必要的过程,但其中的有些数据库的操作过程往往重复,结果造成代码冗余,可读性差。这就要求我们封装一个连接和使用数据库的方法,可以反复调用,提升开发效率

 1 import pymysql 2  3 class Model(object): 4     def __init__(self, username='root', password='123456', database='demo', 
 5                  port=3306, host='localhost'): 6         # 创建连接 7         self.connection = pymysql.connect(user=username, password=password, database=database, 8                                           port=port, host=host, cursorclass=pymysql.cursors.DictCursor) 9         # 创建游标10         self.cursor = self.connection.cursor()11 12     # 查询所有数据13     def fetchall(self, sql):14         try:15             self.__execute(sql)16             return self.cursor.fetchall()17         except Exception as error:18             print(error)19 20     # 查询多条数据21     def fetchmany(self, sql, size=1):22         try:23             self.__execute(sql)24             return self.cursor.fetchmany(size)25         except Exception as error:26             print(error)27 28     # 查询一条数据29     def fetchone(self, sql):30         try:31             self.__execute(sql)32             return self.cursor.fetchone()33         except Exception as error:34             print(error)35 36     # 增删改的方法37     def change(self, sql):38         try:39             self.__execute(sql)40             self.connection.commit()41         except Exception as error:42             print(error)43 44     # 执行的私有方法45     def __execute(self, sql):46         self.cursor.execute(sql)47 48     # 关闭连接和游标49     def __del__(self):50         self.connection.close()51         self.cursor.close()
 1 from data_connect import model 2  3 # 实例化Model类 4 employee = model.Model() 5 res = employee.fetchall('select nickname from employee where job="头领"')[0] 6 res1 = employee.fetchmany('select nickname from employee where job="头领"', 2) 7 res2 = employee.fetchone('select nickname from employee where name = "宋江"') 8 # print(res2) 9 10 # 插入一条语句11 employee.change('insert into employee (name)values ("关羽")')12 # 删除一条语句13 employee.change('delete from employee where name="关羽"')14 # 更新一条语句15 # obj.change('update employee set name="张飞"where id=8004')