【pymysql模块】
文章目录
- 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模块】相关推荐
- MySQL之pymysql模块
PyMySQL介绍 PyMySQL 是在 Python3.x 版本中用于连接 MySQL 服务器的一个库,Python2中则使用mysqldb. Django中也可以使用PyMySQL连接MySQL数 ...
- mysql七个模块_mysql(pymysql模块的使用,视图,触发器)
本节重点: pymysql的下载和使用 execute()之sql注入 增.删.改:conn.commit() 查:fetchone.fetchmany.fetchall 一.pymysql的下载和使 ...
- Mysql: pymysql 模块
import pymysql #导入pymysql模块client=pymysql.connect( #与服务端建立连接 host='127.0.0.1', port=3306, user='root ...
- 5.15 pymysql 模块
pymysql 模块 安装 pip3 install pymysql 链接,执行sql,关闭(游标) import pymysql user= input('用户名:>>').strip( ...
- pymysql模块操作数据库及连接报错解决方法
pymysql模块操作数据库及连接报错解决方法 参考文章: (1)pymysql模块操作数据库及连接报错解决方法 (2)https://www.cnblogs.com/zgngg/p/10607859 ...
- Navicat工具、pymysql模块
Navicat工具.pymysql模块 阅读目录 一 IDE工具介绍 二 pymysql模块 一 IDE工具介绍(Navicat) 生产环境还是推荐使用mysql命令行,但为了方便我们测试,可以使用I ...
- 利用PyMySQL模块操作数据库
连接到数据库 import pymysql # 创建链接得到一个链接对象 conn = pymysql.Connect(host="127.0.0.1", # 数据库服务器主机地址 ...
- 权限管理,pymysql模块
权限管理 权限管理重点 MySQL 默认有个root用户,但是这个用户权限太大,一般只在管理数据库时候才用.如果在项目中要连接 MySQL 数据库,则建议新建一个权限较小的用户来连接. 在 MySQL ...
- MySQL -Naivacat工具与pymysql模块
Navicat 在生产环境中操作MySQL数据库还是推荐使用命令行工具mysql,但在我们自己开发测试时,可以使用可视化工具Navicat,以图形界面的形式操作MySQL数据库. 官网下载:https ...
- mysql用户管理+pymysql模块
mysql 用户管理 Mysql 是一个tcp 服务器 用于接收用户端发送的指令,操作服务器上的文件数据 在mysql自带的mysql数据库中有4个表用于用户管理的 分别是: 优先级从高到低 user ...
最新文章
- Oracle发布开源的轻量级 Java 微服务框架 Helidon
- SVM原理详细图文教程来了!一行代码自动选择核函数,还有模型实用工具
- Java的知识点29—— 文件字符流、字节数组流
- SPOJ-OPTM Optimal Marks ★★(按位建图 最小割)
- MySQL concat函数使用详解
- 利用哈夫曼树编码与译码
- google map flex
- (第十章)多表查询之in,exitst
- Flash游戏抓取,flash网站抓取,flash网站下载工具
- 安装Chrome插件-ChroPath
- CMarkup类操作XML
- MSYS是什么,他与CYGWIN有什么区别?
- 评分模型的检验方法和标准信用评分及实现
- Linux DNS之正向解析(邮件记录、别名解析、泛域名解析)
- win10提示该文件没有与之关联的应用来执行该操作
- nodejs时间函数
- android allow usb debugging,远程调试Android设备 - Chrome 开发者工具中文文档
- W3school html 表格用法总结
- 那么辛苦的熬单片机,不拿它DIY点小玩意怎么对得起自己。
- mkv转mp4,mkv转换mp4格式方法
热门文章
- ts中的interface与type的区别
- 方舟怎么查看服务器信息,方舟怎么查看登录过的服务器 | 手游网游页游攻略大全...
- 信息学奥赛一本通 2036:【例5.3】开关门
- 耗时3个多月、总结过往5年,马毅曹颖沈向洋撰文智能两大原则
- python实现数据可视化软件_基于Python实现交互式数据可视化的工具
- 苹果电脑如何开启桌面显示【硬盘】项目?
- googiehost免费空间申请
- 链化未来共识协议详解(下)
- LoadRunner 技巧之 集合点设置
- java 非法的表达式_Java运行 显示非法的表达式开始 这是为什么呀?