pymysql 裤子 使用详解

介绍

pymysql是在Python3.x版本中用于连接MySQL服务器的一个库
Python2中则使用mysqldb

官方文档:

https://pypi.org/project/PyMySQL/
https://pymysql.readthedocs.io/en/latest/index.html

安装

pip安装
pip install pymysql
pip3 install pymysql
git安装
git clone https://github.com/PyMySQL/PyMySQL
cd PyMySQL/
python3 setup.py install

使用

简单的使用

conn = pymysql.connect(
    host='127.0.0.1',
    port=3306,
    user='root',
    password='root',
    database='day41',
    charset='utf8',
    autocommit=True,
)
cursor = conn.cursor()
data = cursor.execute("select * from class")
# print(cursor.rowcount)
# print(cursor.fetchone())
# print(cursor.fetchmany(aa))
# print(cursor.fetchall())
cursor.close()
conn.close()
连接 connect()
conn = pymysql.connect(
    host='127.0.0.1',
    port=3306,
    user='root',
    password='root',
    database='day41',
    charset='utf8',
    autocommit=True,
)
cursor = conn.cursor(cursor=pymysql.cursors.DictCursor)
'''
conn = pymysql.connect() 用来链接mysql的,so必须要传入链接信息
cursor = conn.cursor(cursor=pymysql.cursors.DictCursor)   建立游标,后面通过游标来执行sql语句,pymysql.cursors.DictCursor设置返回的结果为字典形式,默认是元组  
'''

connet()参数说明

参数说明
host字符串,主机ip地址
port整数,mysql的端口 默认是3306 如果修改了,填写修改之后的
user字符串,mysql的登录用户
password字符串,mysql的登录用户的密码。 也可以写成 passwd 它是password的一个别名,主要用来兼容mysqldb
database字符串,数据库的名称,也可以写成 db 它是database的一个别名,也用来兼容mysqldb
charset字符串,设置字符编码,通常设置utf8,注意不是utf-8,这里是没有 - 的
autocommit布尔类型,自动提交,默认是false,如果不设置为true,则后续要手动提交,conn.commit(),如果忘记写了那么你执行sql返回正常但是实际在数据库当中是没有操作的。
执行sql
cursor.execute(sql, args=None) # 执行单条sql语句
cursor.executemany(sql, args) # 执行多条语句
execute() 参数说明
参数说明
sql字符串, 执行的sql语句,根据args来进行格式化
args可选项,默认为None,能传入list,tuple,dict类型的数据。如果是list,tuple类型数据,sql中用 %s 来占位。如果是dict类型输入,sql中用 %(name)s 来占位
小实例 sql,args默认

在这里插入图片描述

小实例 sql,args = list

在这里插入图片描述

小实例 sql,args = tuple

在这里插入图片描述

小实例 sql,args = dict

在这里插入图片描述

executemany()参数说明
参数说明
sql字符串, 执行的sql语句,根据args来进行格式化
argslist类型,在sql中用 %s 来占位
小实例 executemany(sql, args)

在这里插入图片描述

返回结果
cursor.rowcount         # 返回受影响的行数
cursor.fetchone()       # 只返回一条数据
cursor.fetchmany(size)   # 返回指定条数的数据 size默认是None
cursor.fetchall()       # 返回所有的数据
小实例 fetchone()

在这里插入图片描述

小实例 fetchall()

在这里插入图片描述

小实例 fetchmany

在这里插入图片描述

游标 scroll 走A

在这里插入图片描述
接收两个参数

参数说明
value移动的位数
moderelative 相对移动,相对前一个来移动 默认是它。absolute 绝对移动
小实例 relative

在这里插入图片描述

Thinking~
准确的说第二个fetchone()应该获取的是id为2的数据,但是这里显示的是id为4的数据 why?
scroll(2) 由于默认是relative so 它是相对id为1的数据,跳过2条记录,所有后面的fetchone()获取的是第4条数据

小实例 absolute

在这里插入图片描述

Thinking~
第二次fetchone()应该是返回id为2的数据,但是这里还是返回的id为1的数据 why
Because scroll(0) 把游标移动到数据第一行啦,absolute就是相对于整个查询出来的数据的索引来说,如果是scroll(1,“absolute”) 就是游标移动到第二行。
疑问 小伙子不是写的scroll(1,“absolute”) 怎么是第二行,写的1呀 ⚠️ 查询出来的数据的索引是从0开始的奥,so 1 其实就是第二行数据

sql注入 奇阴技巧 ⭐️⭐️⭐️⭐️⭐️

小菜鸟的sql语句
在这里插入图片描述
卧槽卧槽卧槽怎么回事?
大菜鸟的sql语句
在这里插入图片描述
十年DBA的sql语句
在这里插入图片描述
在这里插入图片描述

Thinking~
sql注入就是利用 sql语句的–注释,来搞事情的,所有小菜鸟没有做处理,整个用户的账号信息都被拿走了
大菜鸟在代码块做来逻辑的手动判断
DBA的没有做处理,它是交给pymysql去做的处理了,so raise error

不能忘记的,擦屁股
conn = pymysql.connect(
    host='127.0.0.1',
    port=3306,
    user='root',
    password='root',
    database='day41',
    charset='utf8',
    autocommit=True,
)
cursor = conn.cursor()
data = cursor.execute("select * from class")

cursor.close()  # 关闭游标  ⭐️⭐️⭐️⭐️⭐️
conn.close()    # 关闭连接  ⭐️⭐️⭐️⭐️⭐️
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值