暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

接口测试 | Day48 Python操作数据库之封装

走向易富强之路 2021-08-17
693
 
背景说明:
1、为了防止三天打鱼两天晒网式学习
2、每日更新1-2个小知识点或者案例
3、只看和跟着做的理解程度是不一样的
4、建议一起打卡练习
5、互相督促打卡 + v:yifuqiang2021

Day48

目标:
  • 封装数据库操作

一、封装数据库操作
1)封装方式1
    import pymysql
    # 获取连接方法
    def get_db_connect():
    db = pymysql.connect(
    host='localhost',
    port=3306,
    user='root',
    passwd='123456',
    db='api_test',
    charset='utf8'
    )
    return db


    # 封装数据库查询
    def select_db(sql):
    # 建立数据库连接
    db = get_db_connect()
    # 从连接建立操作游标
    cur = db.cursor()
    # 使用游标执行sql
    cur.execute(sql)
    # 获取结果
    result = cur.fetchall()
    cur.close() # 关闭游标
    db.close() # 关闭连接
    return result


    # 封装更改数据库操作
    def change_db(sql):
    db = get_db_connect()
    cur =db.cursor()
    try:
    cur.execute(sql)
    db.commit()
    except Exception as e:
    db.rollback()
    finally:
    cur.close()
    db.close()


    # 封装常用数据库操作
    def check_user():
    sql = """select * from usr """
    result = select_db(sql)
    print(result)
    def add_user(id,name):
    sql = """insert into usr(id,name)values({},'{}')""".format(id,name)
    change_db(sql)
    check_user()
    def change_user(id,name):
    sql = '''UPDATE usr SET id ={} WHERE name ="{}" '''.format(id,name)
    change_db(sql)
    check_user()
    def delete_user(id):
    sql = """delete from usr where id ={}""".format(id)
    change_db(sql)
    check_user()


    # 调用
    check_user() # 查
    add_user(8,"钱八") # 增
    change_user(7,'赵六')# 改
    delete_user(2)# 删
    运行结果:

    2)封装方式2
      import pymysql
      class DB:
      def __init__(self):
      self.db = pymysql.connect(
      host='localhost',
      port=3306,
      user='root',
      passwd='123456',
      db='api_test'
      )
      self.cur = self.db.cursor()

      def __del__(self):
      self.cur.close()
      self.db.close()

      def query(self,sql):
      self.cur.execute(sql)
      return self.cur.fetchall()

      def exec(self,sql):
      try:
      self.cur.execute(sql)
      self.db.commit()
      except Exception as e:
      self.db.rollback()
      print(e)

      def check_usr(self,name):
      sql="""select * from usr where name ='{}'""".format(name)
      result = self.query(sql)
      print(result)

      def add_usr(self,id,name):
      self.exec("""insert into usr (id,name) values ({},'{}')""".format(id,name))

      def change_usr(self,id,name):
      self.exec('''update usr set id={} where name = "{}"'''.format(id,name))

      def del_usr(self,name):
      result = self.exec("""delete from usr where name ='{}'""".format(name))


      # 实例化后调用 
      db = DB()
      db.check_usr("张三") # 查
      db.add_usr(6,"赵六") # 增
      db.change_usr(3,"张三") # 改
      db.del_usr("吴八")# 删
      运行结果:

      二、总结
      • 操作
        • 1)建立数据库连接 conn = pymysql.connect()
        • 2)从连接建立操作游标 cur = conn.cursor()
        • 3)使用游标执行sql(读/写) cur.execute(sql)
        • 4)获取结果(读)/ 提交更改(写) cur.fetchall() conn.commit()
        • 5)关闭游标及连接 cur.close();conn.close()
        • 执行修改数据库的操作后不立即生效,使用连接db.commit()提交后才生效,支持事物及回滚db.rollback
        • '''UPDATE usr SET id ={} WHERE name ="{}" '''.format(id,name),注意这里的“”和'',name为字符串需要用""
      • 封装
        • 由于经常要使用到数据库操作,建议将所有数据库操作封装成公用的数据库模块
        • 相比用例中直接使用sql操作数据库,封装常用的数据库操作会更安全
        • 数据库连接信息建议写到配置文件中,从配置文件中读取

      “你的鼓励,是我继续的动力”
      文章转载自走向易富强之路,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

      评论