Pymysql

Pymysql

  1. 安装:pip install pymysql

  2. 导入模块:import pymysql

  3. 创建连接对象:

    1. conn = pymysql.connect(user=root,password='',host='localhost',database='',port=3306,charset='',cursorclass= DictCursor)#cursorclass不指定返回结果就是元组,Dictcursor结果就是字典形式的。
  4. 创建游标对象:cursor = conn.cursor()

  5. 查看数据:

    1. 创建sql语句:sql ='select * from * where*;'
    2. 执行sql语句:cursor.execute(sql)
    3. 获取sql语句执行结果,结果拿完一个少一个:
    4. 获取全部结果:result = cursor.fetchall()
    5. 获取一条结果:result = cursor.fetchone()#多次获取会依次往下
    6. 获取n条结果:result = cursor.fetchmany(n)
    7. 移动光标:
      1. cursor.scroll(1,'relative')相对移动
      2. cursor.scroll(1,'absolute')绝对移动
  6. 插入数据:

    1. 直接用sql语句
      1. 创建语句:sql ='insert into table() values();'
      2. 执行语句:cursor.execute(sql)
      3. 提交事务:
        1. 主动提交:conn.commint()
        2. 自动提交:创建对象时参数设置
    2. 格式化传入参数
      1. 创建占位语句:sql='insert into table() values(%s,%s);'
      2. 执行语句传入数据:cursor.execute(sql,[v1],[v2])
    3. 关键字传入参数
      1. 创建关键字占位语句:sql='insert into table() values(%(k1)s,%(k2)s);'
      2. 执行语句传入数据:cursor.execute(sql,[k1:v1,k2:..],[k1:..,k2:..])
    4. 批量插入数据
      1. 遍历数据插入:[cursor.execute(sql,data) for data in data_all]
      2. 一次性批量插入数据:cursor.executemany(data_all)
  7. 删除数据

    1. 直接用sql语句
      1. 创建语句:sql ='delete from table() where ;'
      2. 执行语句:cursor.execute(sql)
      3. 提交事务:
        1. 主动提交:conn.commint()
        2. 自动提交:创建对象时参数设置
    2. 格式化传入参数
      1. 创建占位语句:sql='delete from table() where (%s,%s);'
      2. 执行语句传入数据:cursor.execute(sql,[v1],[v2])
    3. 关键字传入参数
      1. 创建关键字占位语句:sql='delete from table() where (%(k1)s,%(k2)s);'
      2. 执行语句传入数据:cursor.execute(sql,[k1:v1,k2:..],[k1:..,k2:..])
  8. 更新数据

    1. 直接用sql语句
      1. 创建语句:sql ='update table set * where* ;'
      2. 执行语句:cursor.execute(sql)
      3. 提交事务:
        1. 主动提交:conn.commint()
        2. 自动提交:创建对象时参数设置
    2. 格式化传入参数
      1. 创建占位语句:sql='update table set * where* (%s,%s);'
      2. 执行语句传入数据:cursor.execute(sql,[v1],[v2])
    3. 关键字传入参数
      1. 创建关键字占位语句:sql='update table set * where*(%(k1)s,%(k2)s);'
      2. 执行语句传入数据:cursor.execute(sql,[k1:v1,k2:..],[k1:..,k2:..])
  9. SQL注入问题

    1. 现象:输入内容——容易与注释符——混淆导致代码失效,数据注入
    2. 解决办法:使用官方的关键字传值方式
      1. sql = 'select * from t where f=%(f)s'
      2. cursor.execute(sql)
posted @ 2024-05-31 12:31  zenopan  阅读(2)  评论(0编辑  收藏  举报