Python使用pymysql模块操作mysql增删改查实例分析

发布时间:2020-09-30 16:42:12

来源:脚本之家

阅读:92

本文实例讲述了Python使用pymysql模块操作Mysql增删改查。分享给大家供大家参考,具体如下:

# -*- coding:utf-8 -*-

import pyMYSQL

user = input('请输入用户名:')

pwd = input('请输入密码:')

# 1.连接

conn = pymysql.connect(host='127.0.0.1', port=3306, user='root', password='123', db='t1', charset='utf8')

print(conn)

# 2.创建游标

cursor = conn.cursor()

#注意%s需要加引号

sql = "select * from t1.userinfo where username='%s' and pwd='%s'" %(user, pwd)

print(sql)

# 3.执行sql语句

cursor.execute(sql)

result=cursor.execute(sql) #执行sql语句,返回sql查询成功的记录数目

print(result)

# 关闭连接,游标和连接都要关闭

cursor.close()

conn.close()

if result:

print('登陆成功')

else:

print('登录失败')

下面是执行过程

请输入用户名:lisi

请输入密码:123

select * from t1.userinfo where username='lisi' and pwd='123'

登陆成功

二、execute()之sql注入

方式

#1、sql注入之:用户存在,绕过密码

lisi' -- 任意字符

#2、sql注入之:用户不存在,绕过用户与密码

xxx' or 1=1 -- 任意字符请输入用户名:sdj;fja;' or 1=1 -- ;j;j;jj;jjkdsjfjsd

请输入密码:123

select * from t1.userinfo where username='sdj;fja;' or 1=1 -- ;j;j;jj;jjkdsjfjsd' and pwd='123'

登陆成功

解决:

1采用列表的方式

# 原来是我们对sql进行字符串拼接

# sql="select * from userinfo where name='%s' and password='%s'" %(username,pwd)

# print(sql)

# result=cursor.execute(sql)

#改写为(execute帮我们做字符串拼接,我们无需且一定不能再为%s加引号了)

sql="select * from userinfo where name=%s and pwd=%s" #!!!注意%s需要去掉引号,因为pymysql会自动为我们加上

result=cursor.execute(sql,[user,pwd]) #pymysql模块自动帮我们解决sql注入的问题,只要我们按照pymysql的规矩来。

2采用字典的方法

# -*- coding:utf-8 -*-

import pymysql

user = input('请输入用户名').strip()

pwd = input('请输入密码').strip()

# 连接服务端

conn = pymysql.connect(

host='127.0.0.1',

user='root',

password="123",

database='t1',

port=3306,

charset='utf8'

)

# -- ddadad

# 创建游标对象

cur = conn.cursor()

sql = "select * from userinfo where username = %(name)s and pwd = %(password)s"

print(sql)

# resultNum = cur.execute(sql,[user,pwd])

resultNum = cur.execute(sql,{"name":user,"password":pwd})

print(resultNum)

cur.close()

conn.close()

if resultNum:

print('登陆成功')

else:

print('登陆失败')

三、增、删、改:conn.commit()

commit()方法:在数据库里增、删、改的时候,必须要进行提交,否则插入的数据不生效。

基本框架

import pymysql

username = input('请输入用户名:')

pwd = input('请输入密码:')

# 1.连接

conn = pymysql.connect(host='localhost', port=3306, user='root', password='123', db='db8', charset='utf8')

# 2.创建游标

cursor = conn.cursor()

--------增删改操作----------------

#一定记得commit

conn.commit()

# 4.关闭游标

cursor.close()

# 5.关闭连接

conn.close()

增--》一组数据

sql='insert into userinfo(username,pwd) values(%s,%s)'

effect_row=cursor.execute(sql,(username,pwd)) # effect_row=1

增---》多组数据

sql='insert into userinfo(username,pwd) values(%s,%s)'

effect_row=cursor.executemany(sql,[('赵八','112'),('刘九','114'),('封十','911')]) #effect_row=3

sql='delete from userinfo where pwd like "%2"'

effect_row=cursor.execute(sql)

sql='update userinfo set username = %s where pwd="114"'

effect_row=cursor.execute(sql,'niu') #effect_row=2

**上面的变量 effect_row=cursor.execute(...) ,返回的是成功改变的条目数字

四、查:fetchone、fetchmany、fetchall

表的内容

mysql> select * from userinfo;

+----+----------+-----+

| id | username | pwd |

+----+----------+-----+

| 1 | mjj | 123 |

| 3 | 张三 | 110 |

| 4 | 李四 | 119 |

+----+----------+-----+

3 rows in set (0.00 sec)

固定格式

import pymysql

# 1.连接

conn = pymysql.connect(host='localhost', port=3306, user='root', password='', db='db8', charset='utf8')

# 2.创建游标

cursor = conn.cursor()

sql = 'select * from userinfo'

cursor.execute(sql)

------------执行的查询--------------

# 4.关闭游标

cursor.close()

# 5.关闭连接

conn.close()

fetchone查看一条符合条件的数据,可以连续使用,查询的是上一个fetchone的后面一条

# 查询第一行的数据

row = cursor.fetchone()

print(row) # (1, 'mjj', '123')

# 查询第二行数据

row = cursor.fetchone()

print(row) # (3, '张三', '110')

fetchall():查询所有符合条件的数据

# 获取所有的数据

rows = cursor.fetchall()

print(rows)

#运行结果

((1, 'mjj', '123'), (3, '张三', '110'), (4, '李四', '119')) 取到的返回值是元组

fetchmany:获取指定的条数数据

row=cursor.fetchmany(3)

print(row)

cursor.scroll(num,mode='relative|absolute')  当mode=absolute时,num不能小于0

cursor.scroll(1,mode='relative') # 相对当前位置移动

cursor.scroll(2,mode='absolute') # 相对绝对位置移动

# 查询第一行的数据

row = cursor.fetchone()

print(row) # (1, 'mjj', '123')

# 查询第二行数据

row = cursor.fetchone() # (3, '张三', '110')

print(row)

cursor.scroll(-1,mode='relative') #设置之后,光标相对于当前位置往前移动了一行,所以打印的结果为第二行的数据

row = cursor.fetchone()

print(row)

cursor.scroll(0,mode='absolute') #设置之后,光标相对于首行没有任何变化,所以打印的结果为第一行数据

row = cursor.fetchone()

print(row)

更多关于Python相关内容感兴趣的读者可查看本站专题:《Python常见数据库操作技巧汇总》、《Python数学运算技巧总结》、《Python数据结构与算法教程》、《Python函数使用技巧总结》、《Python字符串操作技巧汇总》、《Python入门与进阶经典教程》及《Python文件与目录操作技巧汇总》

希望本文所述对大家Python程序设计有所帮助。

python pymysql实例_Python使用pymysql模块操作mysql增删改查实例分析相关推荐

  1. Python之Pymysql模块操作MySQL增删改查

    Python3 MySQL 数据库连接 - PyMySQL 驱动 PyMySQL 连接数据库,实现增删改查 什么是 PyMySQL? PyMySQL 是在 Python3.x 版本中用于连接 MySQ ...

  2. php mysql增删改查实例_php连接数据库实现用户数据的增删改查实例

    下面小编就为大家带来一篇使用PHP连接数据库_实现用户数据的增删改查的整体操作示例.小编觉得挺不错的,现在就分享给大家,也给大家做个参考.一起跟随小编过来看看吧 main页面(主页面) 代号 姓名 性 ...

  3. mysql数据库增删改实例_Mysql1:数据库表操作,增删改查举例

    数据库表的相关操作 添加数据库表 语法: 实例: 查看数据库表 语法: show tables; 实例: 查看数据库表结构 1)使用DESCRIBE/DESC 语法: 实例: 2)SHOW CREAT ...

  4. node mysql 增删改查_Nodejs操作MySQL - 增删改查

    先安装npm模块项目 npm init 安装mysql npm install mysql --save Nodejs 连接msyql // 导入mysql const mysql = require ...

  5. Python列表及其基本的操作(增删改查)

    Python列表及其基本的操作(增删改查) 增 1.insert() 2.append() 3.extend() 删 1.del() 2.pop() 2.1pop() 2.2pop(索引) 3.rem ...

  6. oracle将查询结果声明为伪表,Oracle查询操作(增删改查,伪表,高级查询)实例讲解...

    SQL查询操作:增删改查 一.SQL操作符 算术操作符 + - * / 比较操作符 = != < > <= >= BETWEEN--AND IN LINK IS NULL 逻辑 ...

  7. c# 操作oracle数据库,C#连接oracle数据库增删改查实例

    [实例简介] C#连接oracle数据库,增删改查实例,OracleParameter防Sql注入等,适用于新手学习 [实例截图] [核心代码] 5868e8be-414a-4138-8390-2fb ...

  8. mysql 中caption_Django-Model操作数据库(增删改查、连表结构)(示例代码)

    Django-Model操作数据库(增删改查.连表结构) 一.数据库操作 1.创建model表 基本结构 from django.db importmodelsclassuserinfo(models ...

  9. Andriod --- JetPack (七):Room + ViewModel + LiveData 增删改查实例

    1.Andriod - JetPack (一):初识 JetPack 2.Andriod - JetPack (二):LifeCycle 的诞生 3.Andriod - JetPack (三):Vie ...

最新文章

  1. jquery PHP大文件上传,Jquery和BigFileUpload实现大文件上传及进度条显示
  2. python中的diff_python-Numpy和diff()
  3. rxjs里withLatestFrom operators的用法
  4. 关于导入c3p0-0.9.5.5.jar包引发NoClassDefFoundError、ClassNotFoundException
  5. Modbus通信协议之CRC16冗余循环校验函数
  6. 搜索引擎的那些事(开篇)
  7. shell提取文件中的dojo mobile类
  8. markdown常用字体
  9. 数据库实验3 数据库的单表查询
  10. mysql解压rar至指定文件夹_PHP解压ZIP文件到指定文件夹的方法
  11. js实现php中图片轮播,两种js实现轮播图的方式
  12. 2021年山东大学考研数字电路906真题
  13. Intouch System Platform IDE
  14. 下一代半导体表面清洁技术
  15. firefox 屏蔽Backspace按键的后退功能
  16. Android—传感器-方向传感器
  17. CSS中如何设置父元素透明度不影响子元素透明度
  18. matlab区分连续波与脉冲,【求助】连续波多谱勒和脉冲波多谱勒的区别
  19. 【无标题】profinet输入输出式分布式IP67总线IO模块
  20. 十二、在PPT中添加页码

热门文章

  1. python scrapy框架df_Python - Scrapy 框架
  2. android adb复制粘贴工具
  3. Wine 开发者指导/架构概览
  4. 解决: 您目前无法访问 因为此网站使用了 HSTS。网络错误和攻击通常是暂时的,因此,此网页稍后可能会恢复正常。
  5. Android HIDL第一个HelloWorld demo
  6. android获取ip命令
  7. NotificationManager和Notification区别
  8. ubuntu-桌面菜单栏、任务栏、标题栏都不见了-解决办法
  9. elementUI 分页器使用时遇到的Bug
  10. 命令行进入android设置,命令行编译生成APK