zoukankan      html  css  js  c++  java
  • mysql数据库工具类

    分析:
    数据库操作分为两类

    非查询:

    增加,删,修改 都是非查询!

    实现方法: execute(sql语句,不同参数列表)

    增删改区别: sql语句不同, 参数个数不同!--->可以独一个共用方法,把sql和参数传过来! # 增删改功能都返回: 影响行数据!

    def my_execute(sql,params):
    ,,,,
    return num

    查询

    查询1条 游标.fetchone()

    查询多条 游标.fetchall()

    ·连接数据库相关参考所有功能都需要--->放在此类的初始化方法中init

    获取数据库连接:所有方法都需要!--->可以独立出来
    int方法,负责初始连接数据库需要各种参数

    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.hosself.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:重复!

  • 相关阅读:
    iOS中Zbar二维码扫描的使用
    SOJ 1135. 飞跃原野
    SOJ 1048.Inverso
    SOJ 1219. 新红黑树
    SOJ 1171. The Game of Efil
    SOJ 1180. Pasting Strings
    1215. 脱离地牢
    1317. Sudoku
    SOJ 1119. Factstone Benchmark
    soj 1099. Packing Passengers
  • 原文地址:https://www.cnblogs.com/xyh10201117/p/13933893.html
Copyright © 2011-2022 走看看