python的pymysql模块简介
一.介绍
在python中用pymysql模块来对mysql进行操作,该模块本质就是一个套接字客户端软件,使用前需要事先安装
pip3 install pymysql
二.操作简介
import pymysql #链接
conn=pymysql.connect(host='localhost',user='root',password='',database='test',charset='utf8')
#游标
cursor=conn.cursor() #执行完毕返回的结果集默认以元组显示
#执行sql语句
sql='select * from userinfo where name="%s" and password="%s"' %(user,pwd) #注意%s需要加引号
print(sql)
res=cursor.execute(sql) #执行sql语句,返回sql查询成功的记录数目
print(res) cursor.close()
conn.close() if res:
print('登录执行成功')
else:
print('失败')
三.execute()之sql注入
符号--会注释掉它之后的sql,正确的语法:--后至少有一个任意字符
注入的原理就是通过拼接和注释绕过验证
#1、sql注入之:用户存在,绕过密码
egon' -- 任意字符
#2、sql注入之:用户不存在,绕过用户与密码
xxx' or 1=1 -- 任意字符



解决方法:
# 原来是我们对sql进行字符串拼接
# sql="select * from userinfo where name='%s' and password='%s'" %(user,pwd)
# print(sql)
# res=cursor.execute(sql) #改写为(execute帮我们做字符串拼接,我们无需且一定不能再为%s加引号了)
sql="select * from userinfo where name=%s and password=%s" #!!!注意%s需要去掉引号,因为pymysql会自动为我们加上
res=cursor.execute(sql,[user,pwd]) #pymysql模块自动帮我们解决sql注入的问题,只要我们按照pymysql的规矩来。
四.增删改
就是sql的增删改语句写入
sql = 'INSERT INTO student VALUES(9, "wang1", "male", 6)'
# sql = 'update student set class_id = 4 where sname = "wang1"'
# sql = 'delete from student where sname = "wang1"'
res = cursor.execute(sql)
print(res)
conn.commit()
如果数据库引擎是innodb那么增删改后需要用conn.commit()来确认修改不然不起效
sql = 'INSERT INTO student VALUES(9, "wang1", "male", 6)'
sql1 = 'select * from student'
res = cursor.execute(sql)
cursor.execute(sql1)
print(cursor.fetchall()) #不加conn.commit()的结果
((1, '乔丹', 'female', 1), (2, '艾佛森', 'female', 1), (3, '科比', 'male', 2), (4, '小明', 'male', 3), (5, '小芳', 'female', 8), (6, '小明', 'female', 9), (7, 'alex', 'male', 6), (8, 'wang', 'male', 5), (9, 'wang1', 'male', 6))
虽然会话有显示但是实际库中没有

重新执行加入commit()生效
sql = 'INSERT INTO student VALUES(9, "wang1", "male", 6)'
res = cursor.execute(sql)
conn.commit() # 确认插入操作

五.查询
表内容如下:

fetchone,fetchmany,fetchall
sql = 'select * from student'
res = cursor.execute(sql)
print(cursor.fetchone()) #查询一条记录
print(cursor.fetchone())
print(cursor.fetchmany(2)) #查询两条记录
print(cursor.fetchall()) #查询剩余所有记录
print(res) #显示几条记录 执行结果以元组形式显示
(1, '乔丹', 'female', 1)
(2, '艾佛森', 'female', 1)
((3, '科比', 'male', 2), (4, '小明', 'male', 3))
((5, '小芳', 'female', 8), (6, '小明', 'female', 9), (7, 'alex', 'male', 6), (8, 'wang', 'male', 5))
8
lastrowid
获取插入的最后一条数据的自增ID,只能显示数据表属性是自增字段的值
sql = 'INSERT INTO student VALUES(9, "wang1", "male", 6)'
res = cursor.execute(sql)
print(cursor.lastrowid) 执行结果
9
python的pymysql模块简介的更多相关文章
- Python 的 six模块简介
Python 的 six模块简介 six : Six is a Python 2 and 3 compatibility library Six没有托管在Github上,而是托管在了Bitbucket ...
- Python进阶----pymysql模块的使用,单表查询
Python进阶----pymysql模块的使用,单表查询 一丶使用pymysql 1.下载pymysql包: pip3 install pymysql 2.编写代码 ...
- python从入门到大神---Python的jieba模块简介
python从入门到大神---Python的jieba模块简介 一.总结 一句话总结: jieba包是分词技术,也就是将一句话分成多个词,有多种分词模型可选 1.分词模块包一般有哪些分词模式(比如py ...
- python 通过 pymysql模块 操作 mysql 数据库
Python 中操作 MySQL 步骤 安装模块 pip install pymysql 引入模块 在py文件中引入pymysql模块 from pymysql import * Connection ...
- python之pymysql模块简单应用
众所周知,想要在python程序中执行SQL语句需要使用第三方模块:pymysql. 下面,我将为大家简述一下pymysql第三方库的安装到使用的大体流程. pymysql的安装 1.windows系 ...
- python之pymysql模块学习(待完善...)
pymysql介绍 pymysql是在python3.x版本中用于连接mysql服务器的一个库.python2中则使用mysqldb. 安装方法: pip install pymysql 使用实例: ...
- python 连接数据库 pymysql模块的使用
一 Python3连接MySQL 本文介绍Python3连接MySQL的第三方库--PyMySQL的基本使用. 1 PyMySQL介绍 PyMySQL 是在 Python3.x 版本中用于连接 MyS ...
- Python的pymysql模块
PyMySQL是在Python3.x版本中用于连接MySQL服务器的一个库,Python2中则使用MySQLDB. 1.基本语法 # 导入pymysql模块 import pymysql # 连接da ...
- python 调用pymysql模块遇到\转义问题解决办法
1.问题情况 本来存入mysql的是字典,有汉字,由于python版本是2.7,所以在json的时候把我的值变成了unicode,那么在调用pymysql的时候,mysql给我转义取消了. 存之前: ...
随机推荐
- 数据结构复习之C语言指针与结构体
数据结构指针复习: #include <stdio.h> void main() { ] = {, , , , }; // a[3] == *(3+a) printf(+a)); // a ...
- Strom入门
Worker.Executor.Task详解: Storm在集群上运行一个Topology时,主要通过以下3个实体来完成Topology的执行工作:1. Worker Process(工作进程)——S ...
- Oracle 数据库异机恢复(归档模式)
操作必须在服务器上进行(在192.168.12.71上执行) 0.按需要恢复的日期,把距恢复日期最近的全部备份和全部备份日期后的日志备份一同拷贝到需要恢复的机器上: 1.用RMAN登陆 C:\User ...
- Selenium 2.0 以后不在必须Selenium server了
does not require the Selenium Server to automate the browser.这个句话,解决了我很的疑惑,新版Selenium 可以直接操作浏览器了,还可以 ...
- mybatis开发dao的方式
mybatis基于传统dao的开发方式 第一步:开发接口 public interface UserDao { public User getUserById(int id) throws Excep ...
- Visual Studio 快捷键汇总
常见方法: 强迫智能感知:Ctrl+J.智能感知是Visual Studio最大的亮点之一,选择Visual Studio恐怕不会没有这个原因. 撤销:Ctrl+Z.除非你是天才,那么这个快捷键也是 ...
- 西门子 1500 1200 PLC,位访问, 字节访问
访问byte,word中的位 mybyte.%X1 myword.%X1 访问word/dword中的byte myword.%B0 myword.%B1 myDword.%B0 文中mybyte, ...
- java--内存管理的几点小技巧
今天看一本书,书上提到了内存泄露,后面也提到了内存管理的小技巧,在这里记下来,以免以后忘记. 1.尽量使用直接量.比如:String str = "I can play!";而不是 ...
- C# 调用 SQL server 初探
相信不少人都和我一样: 1.学过数据库原理接触过SQL Server,做过一套卷子外加一个数据库设计作业: 2.学过C# 但从来还没在程序里用到过数据库(哈哈,新手躺枪) 这也是我第一次在C#里用数据 ...
- OC property(声明)
@interface Student : NSObject { int _age; int _no; float _height; } // 当编译器遇到@property时,会自动展开成getter ...