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给我转义取消了. 存之前: ...
随机推荐
- django-1-应用开发基本套路
Django 开发基本流程 创建项目 创建应用 修改配置文件 设计数据模型 后台管理注册 编写业务视图 编写模板文件 设置URL 访问测试/调试 部署上线 创建项目 django-admin star ...
- 用java实现一个简单的单用户登陆功能的思路
引用 所谓“单用户单账户登录”是指:在同一系统中,一个用户名不能在两个地方同时登录. 我们参照 QQ 实现效果:当某账号在 A 处登录后,在未退出的情况下,如果再到 B 处登录,那么,系统会挤下 A ...
- 15分钟完成基于Azure公有云搭建远程测试环境
- MySQL中AddDate函数的疑惑
无论使用哪一种RDBMS,都需要使用到其中的一些日期转换函数,在使用MySQL的AddDate函数时,遇到了点小问题,稍作记录. root@localhost:mysql3376.sock [(non ...
- Smart template的控件能否当成普通控件来用
我的同事问过我这个问题: 只要弄清楚Smart control的原理,就能回答这个问题. 答案是: smart control可以像普通的控件一样在xml view中被定义和使用,但是必须结合ODat ...
- python入门1 python手动编译py_compile,compileall
python运行之后会自动生产pyc文件,也可以手动编译生成pyc文件.代码如下: #coding:utf-8 """ 2018-11-03 dinghanhua 手动编 ...
- C++11新特性之 std::forward(完美转发)
我们也要时刻清醒,有时候右值会转为左值,左值会转为右值. (也许“转换”二字用的不是很准确) 如果我们要避免这种转换呢? 我们需要一种方法能按照参数原来的类型转发到另一个函数中,这才完美,我们称之为完 ...
- Hibernate 基于外键映射的一对一关联关系随手记
//有外键的一端默认使用懒加载. //没有外键的一端不使用懒加载,而是直接将它引用的对象也一并查询出来. //没有外键列不仅有外键约束还有唯一约束,即没有外键列一端的对象不能被有外键列一端的两个对象同 ...
- Catalan数列
引入 今天听学长讲了卡特兰数列后对其有了更深的认识,在此完善了一下之前的博客加以总结. 首先用一个经典的例子来描述一下Catalan数列,我们有一个1~n的数列和一个大小为n的栈,我们有如下两种操作: ...
- Python Day 15 递归、匿名函数、内置函数
阅读目录 内容回顾 生成器的send方法 递归 匿名函数 内置函数 ##内容回顾 #1.带参装饰器 - 自定义 | wraps def wrap(info) def outer1(func): fro ...