文章目录

  • pymysql的基本使用
  • scroll控制游标移动
  • pymysql 的二次确认
  • SQL 注入问题

pymysql的基本使用

安装pymysql模块

pip3 install pymysql

导入模块

import pymysql

pymysql.connec(…)进入数据库的界面

注意:charset = ‘utf8’,这里的 utf8 不能写成 utf-8

import pymysql# 链接数据库
conn = pymysql.connect(# 主机地址host='127.0.0.1',# 端口号port=3306,user='root',password='12345678',# 链接的库的名称database='company',# 字符串类型charset='utf8'
)

cursor(cursor=pymysql.cursors.DictCursor)生成游标对象

cursor = conn.cursor() # 括号内不写参数默认是元组类型展示
# cursor = conn.cursor( cursor=pymysql.cursors.DictCursor ) # 会将每一条记录变成字典类型

# 定义 sql 语句
sql = 'show tables'
sql1 = 'show databases'# execute(sql 语句)--执行 SQL 语句
affect_rows = cursor.execute(sql)
# 该方法有一个返回值,执行 SQL 语句之后所影响的行数
print(affect_rows)# 获取执行的结果
res = cursor.fetchall()
print(res)affect_rows1 = cursor.execute(sql1)
print(affect_rows1)
res = cursor.fetchall()
print(res)

scroll控制游标移动

cursor.scroll( 整数, 移动模式 )

移动模式只有两种:‘relative’和’absolute’

# 相对移动,相对游标当前所处的的位置,向后移动一个位置
cursor.scroll( 1, 'relative' )# 绝对移动,相对于初始位置,向后移动一个位置
cursor.scroll( 1, 'absolute' )

pymysql 的二次确认

pymysql 对于数据库的查询操作并不需要二次确认

pymysql 对于数据库的 增加,删除,修改操作需要二次确认

sql = 'insert into test1(name, password) values (%s,%s)'
cursor.execute(sql,('tony',123))
# 二次确认,注意调用的是 conn 而不是cursor
conn.commit()

很明显,该方法每次修改都要加上commit( )很不方便

连接数据库时修改参数-------autocommit = True

import pymysql# 链接数据库
conn = pymysql.connect(# 主机地址host='127.0.0.1',# 端口号port=3306,user='root',password='595420',# 链接的库的名称database='py',# 字符串类型charset='utf8',# 自动二次确认autocommit = True
)

SQL 注入问题

利用特殊符号的组合,组成的 SQL 语句来绕过一些特定的机制

import pymysqlconn = pymysql.connect(host='127.0.0.1',port=3306,user='root',password='595420',database='py',charset='utf8'
)cursor = conn.cursor(cursor=pymysql.cursors.DictCursor)username = input('username:>>>>').strip()
password = input('password:>>>>').strip()# 定义 sql 语句
sql = 'select * from test where name="%s" and password="%s"'%(username,password)
# sql = f'select * from test1'# execute(sql 语句)--执行 SQL 语句
cursor.execute(sql)
# 获取执行的结果
res = cursor.fetchall()if res:print(res)print('login success')
else:print('login failed')


写正确的用户名错误的密码也可以登录
用户名:jason’ – jhahsdjasdjasd
密码:直接回车
用户名和密码都不需要也可以登录
用户名:xxx’ or 1=1 – asdjasjdkajsd
密码:直接回车
“”“上述现象就是典型的SQL注入问题”“”
上述情况利用的是MySQL注释语法及逻辑运算符
解决方法:
解决SQL注入的问题其实也很简单 就是想办法过滤掉特殊符号
execute方法自带校验SQL注入问题 自动处理特殊符号
ps:设计到敏感数据的拼接 全部交给execute方法即可!!!

sql = “select * from userinfo where name=%s and password=%s;”
cursor.execute(sql, (name, password))

【pymysql模块】相关推荐

  1. MySQL之pymysql模块

    PyMySQL介绍 PyMySQL 是在 Python3.x 版本中用于连接 MySQL 服务器的一个库,Python2中则使用mysqldb. Django中也可以使用PyMySQL连接MySQL数 ...

  2. mysql七个模块_mysql(pymysql模块的使用,视图,触发器)

    本节重点: pymysql的下载和使用 execute()之sql注入 增.删.改:conn.commit() 查:fetchone.fetchmany.fetchall 一.pymysql的下载和使 ...

  3. Mysql: pymysql 模块

    import pymysql #导入pymysql模块client=pymysql.connect( #与服务端建立连接 host='127.0.0.1', port=3306, user='root ...

  4. 5.15 pymysql 模块

    pymysql 模块 安装 pip3 install pymysql 链接,执行sql,关闭(游标) import pymysql user= input('用户名:>>').strip( ...

  5. pymysql模块操作数据库及连接报错解决方法

    pymysql模块操作数据库及连接报错解决方法 参考文章: (1)pymysql模块操作数据库及连接报错解决方法 (2)https://www.cnblogs.com/zgngg/p/10607859 ...

  6. Navicat工具、pymysql模块

    Navicat工具.pymysql模块 阅读目录 一 IDE工具介绍 二 pymysql模块 一 IDE工具介绍(Navicat) 生产环境还是推荐使用mysql命令行,但为了方便我们测试,可以使用I ...

  7. 利用PyMySQL模块操作数据库

    连接到数据库 import pymysql # 创建链接得到一个链接对象 conn = pymysql.Connect(host="127.0.0.1", # 数据库服务器主机地址 ...

  8. 权限管理,pymysql模块

    权限管理 权限管理重点 MySQL 默认有个root用户,但是这个用户权限太大,一般只在管理数据库时候才用.如果在项目中要连接 MySQL 数据库,则建议新建一个权限较小的用户来连接. 在 MySQL ...

  9. MySQL -Naivacat工具与pymysql模块

    Navicat 在生产环境中操作MySQL数据库还是推荐使用命令行工具mysql,但在我们自己开发测试时,可以使用可视化工具Navicat,以图形界面的形式操作MySQL数据库. 官网下载:https ...

  10. mysql用户管理+pymysql模块

    mysql 用户管理 Mysql 是一个tcp 服务器 用于接收用户端发送的指令,操作服务器上的文件数据 在mysql自带的mysql数据库中有4个表用于用户管理的 分别是: 优先级从高到低 user ...

最新文章

  1. Oracle发布开源的轻量级 Java 微服务框架 Helidon
  2. SVM原理详细图文教程来了!一行代码自动选择核函数,还有模型实用工具
  3. Java的知识点29—— 文件字符流、字节数组流
  4. SPOJ-OPTM Optimal Marks ★★(按位建图 最小割)
  5. MySQL concat函数使用详解
  6. 利用哈夫曼树编码与译码
  7. google map flex
  8. (第十章)多表查询之in,exitst
  9. Flash游戏抓取,flash网站抓取,flash网站下载工具
  10. 安装Chrome插件-ChroPath
  11. CMarkup类操作XML
  12. MSYS是什么,他与CYGWIN有什么区别?
  13. 评分模型的检验方法和标准信用评分及实现
  14. Linux DNS之正向解析(邮件记录、别名解析、泛域名解析)
  15. win10提示该文件没有与之关联的应用来执行该操作
  16. nodejs时间函数
  17. android allow usb debugging,远程调试Android设备 - Chrome 开发者工具中文文档
  18. W3school html 表格用法总结
  19. 那么辛苦的熬单片机,不拿它DIY点小玩意怎么对得起自己。
  20. mkv转mp4,mkv转换mp4格式方法

热门文章

  1. ts中的interface与type的区别
  2. 方舟怎么查看服务器信息,方舟怎么查看登录过的服务器 | 手游网游页游攻略大全...
  3. 信息学奥赛一本通 2036:【例5.3】开关门
  4. 耗时3个多月、总结过往5年,马毅曹颖沈向洋撰文智能两大原则
  5. python实现数据可视化软件_基于Python实现交互式数据可视化的工具
  6. 苹果电脑如何开启桌面显示【硬盘】项目?
  7. googiehost免费空间申请
  8. 链化未来共识协议详解(下)
  9. LoadRunner 技巧之 集合点设置
  10. java 非法的表达式_Java运行 显示非法的表达式开始 这是为什么呀?