• mysql补充


    目标:
    实现数据库操作工具类!
    学生管理系统实现!
    
    Mysql数据库工具类

    新建MysqlHelper/DBUtils,实现操作数据库代码的 复用!
    分析
    数据库操作分为两类
    • 非查询
    # 增加,删,修改 都是非查询! 
    # 实现方法: execute(sql语句,不同参数列表) 
    # 增删改区别: sql语句不同, 参数个数不同!--->可以独一个共用方法,把sql和参数传过来! # 增删改功能都返回: 影响行数据! 
    def my_execute(sql,params): 
         ,,,, 
         return num
    
    • 查询  
    # 查询1条 游标.fetchone() 
    # 查询多条 游标.fetchall()
    
    • 连接数据库相关参考所有功能都需要--->放在类的初始化方法中init
    获取数据库连接: 所有方法都需要!--->可以独立出来! 
    init方法,负责初始连接数据库需要各种参数!
    
    class MysqlHelper(): 
         # 初始化方法 
         def __init__(self,主机地址,端口,用户名,密码,字符集) 
         self.主机地址=主机地址 
         .... 
    
         def my_execute(sql,prames):
                pass 
                def connect(): 
                      ...... 
    # 使用 
    db = MysqlHelper(Ip地址,端口.用户名,密码.字符集) 
    # 增加 
    num =db.my_execute(sql语句,参数列表) 
    if num>0: 
         print('成功') 
    else:
         print('失败')
    

    代码实现  

    import pymysql # 导入数据库驱动模块! 
    class MysqlHelper(): 
         #db = MysqlHelper('39.98.39.173',13306,'root','root','1909C2') 
         def __init__(self,host,port,user,passwd,db,charset='utf8'): 
              self.host= host 
              self.port = port 
              self.user = user 
              self.passwd = passwd 
              self.db = db 
              self.charset=charset 
              #self.conn = None 
        def connect(self): 
             '''功能1: 获取连接''' 
             self.conn = pymysql.connect(host=self.host,port=self.port,user=self.user,passwd=self.passwd,db=sel f.db,charset=self.charset) 
             self.cursor =self.conn.cursor() 
        def close(self): 
             '''功能2:释放资源''' 
             self.cursor.close() #关游标 
             self.conn.close()# 关连接 
        def my_execute(self,sql,params): 
        '''增删改通用功能 
          :param sql: sql语句 
          :param params: 参数列表 
          :return: num 影响行数 ''' 
          num =0 
          # 1. 打开连接 
          self.connect() 
          num = self.cursor.execute(sql,params) 
          self.conn.commit() 
          self.close() #释放资源
          return num 
    def get_one(self,sql,params): 
          ''' 查询1条 
         :param sql: sql语句 
         :param params: 参数列表 
         :return: 1条结果 ''' 
         result =None 
         #1.打开链接 
         self.connect() 
         # 2.执行查询 
         self.cursor.execute(sql,params) 
         # 3 逐行抓取 
         result = self.cursor.fetchone() 
         #4.释放资源 
         self.close() 
         return result 
    def get_all(self, sql, params): 
         ''' 查询所有 
         :param sql: sql语句 
         :param params: 参数列表 
         :return: 1条结果 ''' 
         result = () 
         self.connect() 
         self.cursor.execute(sql, params) 
         result = self.cursor.fetchall() 
         self.close() 
         return result 
    if __name__ == '__main__': 
         # 实例化对象 
         db = MysqlHelper('39.98.39.173',13306,'root','root','1909C2') 
         #增加 
         #insert into students values(default,'张A','男',20,'2020-11-05','176','山西') 
         ''' sql = 'insert into students values(default,%s,%s,%s,%s,%s,%s)' 
         params=['张B','男',20,'2020-11-05','176','山西'] 
         num = db.my_execute(sql,params) 
         print(num) ''' 
         # 查1条 
         sql = 'select * from students where age =%s' 
         params=(12) 
         result =db.get_one(sql,params) #((),()) 
         print(result) 
         studetns = db.get_all(sql,params)
         for stu in studetns: 
              print(f'名字:{stu[1]}')    
    
    错误
    [SQL] insert into students values(default,'张三','男',20,'2020-11-05','176','山西') [Err] 1062 - Duplicate entry '张三' for key 'name' # 名字重复! Duplicate:重复!
    
    学生管理系统
    from MysqlHelper import MysqlHelper #导入mysql工具类
    from datetime import datetime #导入日期模块 
    
    
    def add_stu(): 
         # 1.实例化工具类 
         db = MysqlHelper('39.98.39.173', 13306, 'root', 'root', '1909C2') 
         # 2. 调用增加方法 
         #insert into students values(default,'张A','男',20,'2020-11-05','176','山西') 
         sql = 'insert into students values(default,%s,%s,%s,%s,%s,%s)' 
         params=['张D','男',20,datetime.now(),'176','山西'] 
         num =db.my_execute(sql,params) 
         return num 
    
    
    def del_stu(name): 
          '''删除''' 
          db = MysqlHelper('39.98.39.173', 13306, 'root', 'root', '1909C2') 
          sql = 'delete from students where name =%s' 
          params=[name] 
          num = db.my_execute(sql,params) 
          return num 
    
    
    def update_stu(oldName,name,age,sex,phone,addr): 
         db = MysqlHelper('39.98.39.173', 13306, 'root', 'root', '1909C2') 
         sql ='update students set name =%s,age=%s,sex=%s,phone=%s,addr=%s where name = %s' 
         params = (name,age,sex,phone,addr,oldName) 
         return db.my_execute(sql,params) 
    
    
    def get_all(): 
         db = MysqlHelper('39.98.39.173', 13306, 'root', 'root', '1909C2') 
         sql = 'select * from students' 
         students = db.get_all(sql,None)
         for stu in students: 
         print(f'名字:{stu[1]},性别:{stu[2]}') 
    
    
    def get_by_name(name): 
         db = MysqlHelper('39.98.39.173', 13306, 'root', 'root', '1909C2') 
         sql = 'select * from students where name =%s' 
         params = (name) students = db.get_all(sql,params)
         for stu in students: 
              print(f'名字:{stu[1]},性别:{stu[2]}') 
    if __name__ == '__main__':
        '''增加 
        if add_stu() > 0: 
        print('成功') 
        else:
        print('失败') ''' 
        ''' 删除
        if del_stu('张D') >0:
        print('成功') 
        else:
        print('失败') ''' 
        '''修改 
        if update_stu('zhang',"张小三",40,'女','110110','陕西')>0: 
        print('修改成功') 
        else:print('失败') 
        ''' 
        get_all()
    

      

      

     

      

      

      

  • 相关阅读:
    2020.11.21日记
    Miller-Rabin质数测试
    Deepin配置记录
    shell
    module load
    vma
    DRDI
    Android.mk
    AEE
    阿里云下配置二级域名的解析设置
  • 原文地址:https://www.cnblogs.com/zuohangyu123/p/13932826.html
Copyright © 2020-2023  润新知