pymysql模块

一、安装的两种方法

第一种

#安装
pip3 install pymysql

第二种

二、链接,执行sql,关闭(游标)

import pymysql
user= input('用户名:>>').strip()
pwd= input('密码:>>').strip()#先链接,拿到游标
conn=pymysql.connect(host='localhost',user='root',password='123456',             database='day47',charset='utf8')
cursor=conn.cursor() #拿到游标,即mysql >
#执行sql
sql='select * from user where user="%s" and password="%s";'%(user,pwd)
print(sql) #注意%s需要加双引号 rows = cursor.execute(sql) #拿到受影响的行数  cursor.close() conn.close() if rows: print('登录成功') else: print('登录失败')

三、execute()之sql注入

注意:符号--会注释掉它之后的sql,正确的语法:--后至少有一个任意字符

根本原理:就根据程序的字符串拼接name='%s',我们输入一个xxx' -- haha,用我们输入的xxx加'在程序中拼接成一个判断条件name='xxx' -- haha'

最后那一个空格,在一条sql语句中如果遇到select *from t1 where id > 3 -- and name='egon';则--之后的条件被注释掉了#1、sql注入之:用户存在,绕过密码
egon' -- 任意字符#2、sql注入之:用户不存在,绕过用户与密码
xxx' or 1=1 -- 任意字符

解决注入

# 原来是我们对sql进行字符串拼接
# sql="select * from userinfo where name='%s' and password='%s'" %(user,pwd)
# print(sql)
# rows=cursor.execute(sql)#改写为(execute帮我们做字符串拼接,我们无需且一定不能再为%s加引号了)
sql="select * from userinfo where name=%s and password=%s" #!!!注意%s需要去掉引号,因为pymysql会自动为我们加上
rows=cursor.execute(sql,[user,pwd])#pymysql模块自动帮我们解决sql注入的问题,只要我们按照pymysql的规矩来。

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

增:

import pymysql
先链接,拿到游标
conn=pymysql.connect(host='localhost',user='root',password='123456',database='day47')
cursor=conn.cursor() #拿到游标,即mysql >
#执行sql   增:
sql='insert into user1(user,password) VALUES (%s,%s)'
print(sql)
# rows = cursor.execute(sql,('xixi',123))  #插入一条记录
rows = cursor.executemany(sql,[('xixi',123),('aaa',456),('ttt',147)]) #插入多行记录
print('%s row in set (0.00 sec)'%rows)conn.commit() #提交到数据库
cursor.close()
conn.close()

删:

import pymysql
#先链接,拿到游标
name=input('>>').strip()
conn=pymysql.connect(host='localhost',user='root',password='123456',database='day47')
cursor=conn.cursor() #拿到游标,即mysql >
#执行sql   删:
sql='delete from user1 where user =%s;'  #删除数据
print(sql)
rows = cursor.execute(sql,(name))
print('%s row in set (0.00 sec)'%rows) conn.commit() #提交到数据库 cursor.close() conn.close()

改:

import pymysql
#先链接,拿到游标
id=input('>>').strip()
conn=pymysql.connect(host='localhost',user='root',password='123456',database='day47')
cursor=conn.cursor() #拿到游标,即mysql >
#执行sql   改:
sql=' update user1 set password = "5555555" where id=%s;'
print(sql)
rows = cursor.execute(sql,(id))
print('%s row in set (0.00 sec)'%rows) conn.commit() #提交到数据库 cursor.close() conn.close()

五、查:fetchone,fetchmany,fetchall

---------查fetchone,fetchmany,fetchall-----------
import pymysql
conn=pymysql.connect(host='localhost',user='root',password='123456',database='day47')
cursor=conn.cursor() #拿到游标,即mysql >
#执行sql   查:
sql='select * from user1;'
rows = cursor.execute(sql)#查单条fetchone
res1=cursor.fetchone()
res2=cursor.fetchone() res3=cursor.fetchone() print(res1) print(res2) print(res3) print(res3[0]) #查多条fetchmany print(cursor.fetchmany(3)) print(cursor.fetchone()) #查所有fetchall print(cursor.fetchall()) print(cursor.fetchone()) #-------光标的移动-------- #1.绝对路径:从文件的开头位置算起 print(cursor.fetchall()) cursor.scroll(1,mode='absolute') print(cursor.fetchone()) cursor.scroll(3,mode='absolute') print(cursor.fetchone()) #2.相对路径: print(cursor.fetchone()) print(cursor.fetchone()) cursor.scroll(2,mode='relative') #相对于上面的两条向后移两条 print(cursor.fetchone()) print('%s row in set (0.00 sec)' %rows) cursor.close() conn.close()

六、获取插入的最后一条数据的自增ID

------查看表中最后一行的iD
import pymysql
conn=pymysql.connect(host='localhost',user='root',password='123456',             database='day47',charset='utf8')
cursor=conn.cursor()sql='insert into user1(user,password) values(%s,%s);'
rows=cursor.execute(sql,('alex','123')) # rows=cursor.executemany(sql,[('yuanhao','123'),('laowu','123'),('kgf','12323')]) conn.commit() print(cursor.lastrowid) #查看表中最后一行的iD  cursor.close() conn.close()

转载于:https://www.cnblogs.com/kcwxx/p/10145595.html

mysql学习【第14篇】:pymysql相关推荐

  1. 数据库MySQL学习笔记高级篇(周阳)

    数据库MySQL学习笔记高级篇 1. mysql的架构介绍 mysql简介 高级Mysql mysqlLinux版的安装 mysql配置文件 mysql逻辑架构介绍 mysql存储引擎 2. 索引优化 ...

  2. MySQL学习笔记-基础篇2

    MySQL学习笔记-基础篇2 目录 MySQL学习笔记-基础篇2 8.子查询 8.1 需求分析与问题解决 8.1.1 实际问题 8.1.2 子查询的基本使用 8.1.3 子查询的分类 8.2 单行子查 ...

  3. MySQL学习笔记-基础篇1

    MySQL 学习笔记–基础篇1 目录 MySQL 学习笔记--基础篇1 1. 数据库概述与MySQL安装 1.1 数据库概述 1.1.1 为什么要使用数据库 1.2 数据库与数据库管理系统 1.2.1 ...

  4. MySQL学习笔记-第一篇-基础知识与命令

    目录 1 登录命令 1.1 主机域名登录 1.2 主机ip登录 2 库命令 2.1 显示库 2.2 创建数据库 2.3 删除数据库 2.4 MySQL-8.新特性 3 表命令 3.1 创建数据表 3. ...

  5. mysql学习笔记14 多表查询初步

    对数据分组的总结 举例:统计各个部门的平均工资,并且是大于1000的,并且按照平均工资从高到底排序 mysql> select avg(stsal) as myavgsal, stdepno f ...

  6. Mysql学习之优化篇

    索引优化 一.主键设计问题 1.1 雪花算法 1.1.1 结构 1.1.2 优缺点 1.1.3 代码实现 1.2 UUID 1.2.1 定义 1.2.2 结构 1.2.3 优缺点 1.3 数据库ID自 ...

  7. Python|SQL详解之DDL|DML|DQL|DCL|索引|视图、函数和过程|JSON类型|窗口函数|接入MySQL|清屏|正则表达式|executemany|语言基础50课:学习(14)

    文章目录 系列目录 原项目地址 第41课:SQL详解之DDL 建库建表 删除表和修改表 第42课:SQL详解之DML insert操作 delete 操作 update 操作 完整的数据 第43课:S ...

  8. 实用篇 | MySQL 学习笔记

    实用篇 | MySQL 学习笔记 MySQL 是最流行的关系型数据库管理系统,在 WEB 应用方面 MySQL 是最好的 RDBMS (Relational Database Management S ...

  9. 14 篇论文为你呈现「迁移学习」研究全貌 | 论文集精选 #04

    PaperWeekly 是一个 AI 学术分享社区.这里聚集了大批一线 AI 学者,他们用精炼妙语推荐各自发现的优质论文.点击本文底部的「阅读原文」即刻加入社区,创建属于你的论文集. 这里是第 4 期 ...

  10. 深度学习之美系列之14篇

    一.<深度学习之美>成书前的深度学习14篇目录 一. 一入侯门"深"似海,   深度学习深几许  (深度学习入门系列之一) 二. 人工"碳"索意犹尽 ...

最新文章

  1. linux安装配置postgres及使用dblink
  2. 惨烈!程序员放弃了 Python!?发生了啥?
  3. win7冒险岛java,win7玩冒险岛不兼容怎么办?解决win7玩冒险岛不兼容的方法
  4. cherish now no longer missed
  5. C++中const与指针
  6. linux 常用命令 杂记
  7. 遇到一个Linux系统文件被删除后仍占用磁盘的问题
  8. 3.13、@InitBinder 和 WebDataBinder
  9. ubuntu卸载和安装mysql
  10. Python---PDF转JPG图片
  11. 移动端抓包工具spy-debugger使用
  12. 安卓手机管理_七色米ERP(七色米ERP进销存管理)V1.2.1 安卓手机版
  13. scala 的上界下界
  14. hopfileld神经网络_图卷积神经网络
  15. PHP 蒙太奇马赛克拼图,AndreaMosaic制作一幅马赛克拼图
  16. 这3款免费的Word转PDF转换器软件,建议收藏使用
  17. 公布一下各类学术杂志的审稿费、版面费
  18. Python数据分析练习:北京、广州PM2.5空气质量分析(1)
  19. 和平精英苹果系统显示服务器暂未开放,和平精英苹果更新不了 苹果无法进行版本更新如何解决...
  20. 【级数求和】C语言解析

热门文章

  1. MySQL-在线处理大表数据 在线修改大表的表结构
  2. 白话Elasticsearch62-进阶篇之Highlighting高亮显示
  3. 白话Elasticsearch24- 深度探秘搜索技术之TFIDF算法/向量空间模型算法/lucene的相关度分数算法
  4. Spring Cloud【Finchley】-05使用配置文件自定义Ribbon Client
  5. posixkill php,在linux中使用PHP的posix_kill()会导致奇怪的行为
  6. 学习笔记Flink(六)—— Flink DataStream API编程
  7. python学习笔记(三)—— 序列类型及方法(列表、元组、字符串)
  8. netbeans卸载 linux,NetBeans_6.1自己使用。(linux-ubuntu下)
  9. java高效率素数算法_《Core Java》里给出的算法,效率比较高。 统计2000000以内的所有的素数。...
  10. js 判断变量是否有值返回bool_有没有办法可以获得javascript函数返回值里的bool值,代码如下:...