Pymysql
-
安装:pip install pymysql
-
导入模块:import pymysql
-
创建连接对象:
- conn = pymysql.connect(user=root,password='',host='localhost',database='',port=3306,charset='',cursorclass= DictCursor)#cursorclass不指定返回结果就是元组,Dictcursor结果就是字典形式的。
-
创建游标对象:cursor = conn.cursor()
-
查看数据:
- 创建sql语句:sql ='select * from * where*;'
- 执行sql语句:cursor.execute(sql)
- 获取sql语句执行结果,结果拿完一个少一个:
- 获取全部结果:result = cursor.fetchall()
- 获取一条结果:result = cursor.fetchone()#多次获取会依次往下
- 获取n条结果:result = cursor.fetchmany(n)
- 移动光标:
- cursor.scroll(1,'relative')相对移动
- cursor.scroll(1,'absolute')绝对移动
-
插入数据:
- 直接用sql语句
- 创建语句:sql ='insert into table() values();'
- 执行语句:cursor.execute(sql)
- 提交事务:
- 主动提交:conn.commint()
- 自动提交:创建对象时参数设置
- 格式化传入参数
- 创建占位语句:sql='insert into table() values(%s,%s);'
- 执行语句传入数据:cursor.execute(sql,[v1],[v2])
- 关键字传入参数
- 创建关键字占位语句:sql='insert into table() values(%(k1)s,%(k2)s);'
- 执行语句传入数据:cursor.execute(sql,[k1:v1,k2:..],[k1:..,k2:..])
- 批量插入数据
- 遍历数据插入:[cursor.execute(sql,data) for data in data_all]
- 一次性批量插入数据:cursor.executemany(data_all)
-
删除数据
- 直接用sql语句
- 创建语句:sql ='delete from table() where ;'
- 执行语句:cursor.execute(sql)
- 提交事务:
- 主动提交:conn.commint()
- 自动提交:创建对象时参数设置
- 格式化传入参数
- 创建占位语句:sql='delete from table() where (%s,%s);'
- 执行语句传入数据:cursor.execute(sql,[v1],[v2])
- 关键字传入参数
- 创建关键字占位语句:sql='delete from table() where (%(k1)s,%(k2)s);'
- 执行语句传入数据:cursor.execute(sql,[k1:v1,k2:..],[k1:..,k2:..])
-
更新数据
- 直接用sql语句
- 创建语句:sql ='update table set * where* ;'
- 执行语句:cursor.execute(sql)
- 提交事务:
- 主动提交:conn.commint()
- 自动提交:创建对象时参数设置
- 格式化传入参数
- 创建占位语句:sql='update table set * where* (%s,%s);'
- 执行语句传入数据:cursor.execute(sql,[v1],[v2])
- 关键字传入参数
- 创建关键字占位语句:sql='update table set * where*(%(k1)s,%(k2)s);'
- 执行语句传入数据:cursor.execute(sql,[k1:v1,k2:..],[k1:..,k2:..])
-
SQL注入问题
- 现象:输入内容——容易与注释符——混淆导致代码失效,数据注入
- 解决办法:使用官方的关键字传值方式
- sql = 'select * from t where f=%(f)s'
- cursor.execute(sql)
posted @
2024-05-31 12:31
zenopan
阅读(
2)
评论()
编辑
收藏
举报