前言
本篇文章第一节用来介绍 Python3 使用 PyMySQL 连接数据库,并实现简单的增删改查;
第二节用来总结数据库中两种清空表数据方法的区别。
一、PyMySQL
1.什么是PyMySQL ?
为了使python连接上数据库,你需要一个驱动,这个驱动是用于与数据库交互的库。
PyMySQL : 这是一个使Python连接到MySQL的库,它是一个纯Python库(文件夹)。PyMySQL 是一个纯 Python 实现的 MySQL 客户端操作库,支持事务、存取过程、批量执行,实现增删改查等。
2.PyMySQL的安装
使用以下命令进行安装:
pip install pymysql -i 镜像
3.PyMySQL的主要流程
import pymysql
# 1.创建链接
conn = pymysql.connect( # 赋值给 conn连接对象
host='127.0.0.1', # 本地IP地址
port=3306, # 默认端口
user='root', # 用户名
password='123', # 密码
database='db_01', # 连接数据库名称
charset='utf8' # 编码 不能写utf-8)
# 2.生成一个游标对象(相当于cmd打开mysql中的 mysql>)
cursor = conn.cursor(cursor=pymysql.cursors.DictCursor) # 让数据自动组织成字典
# 3.定义SQL语句
sql = 'select * from egg'
# 4.执行SQL语句
ret = cursor.execute(sql)print(ret) # 返回值是执行SQL语句之后受影响的行数
# 5.1获取返回的所有结果
res = cursor.fetchall()
# 5.2获取下一个查询结果集,结果集是一个对象
res = cursor.fetchone()
# 5.3获取几个结果集,括号内可以指定个数
res = cursor.fetchmany(3)
# 输出列表套字典
print(res)
4.PyMySQL的增删改查操作
(1)增删改查实例
sql1 = 'select * from egg' # 查询表内数据
sql2 = 'insert into egg(name,password) values(%s,%s)' # 插入数据
sql3 = 'update egg set name=jasonNB where id=1' # 修改数据
sql4 = 'delete from egg where id=2' # 删除数据
在数据库的增删改查操作中:
查的级别是最低的,故可以直接操作,
增删改的级别最高的,pymysq没有权限去操作,需要使用到二次确认才能进行增删改操作;
因此,针对增删改操作 需要二次确认才可生效。
(2)二次确认(手动测试)
cursor.execute(sql2,('tony',123)) # 插入数据
conn.commit() # 二次确认
cursor.execute(sql3) # 修改数据
conn.commit() # 二次确认
cursor.execute(sql4)# 删除数据
conn.commit() # 二次确认
(3)二次确认(自动化)
conn = pymysql.connect( # 赋值给 conn连接对象
host='127.0.0.1', # 本地IP地址
port=3306, # 默认端口
user='root', # 用户名
password='123', # 密码
database='db_01', # 连接数据库名称
charset='utf8', # 编码
autocommit=True # 涉及到增删改 自动二次确认)
5.生成一个游标对象
cursor = conn.cursor(cursor=pymysql.cursors.DictCursor) # 让数据自动组织成字典
sql1 = 'select * from egg'
sql2 = 'insert into egg(name,password) values(%s,%s)'
sql3 = 'update egg set name="jaonNB" where id=2'
sql4 = 'delete from egg where id=1
cursor.execute(sql2,('laike',123)) # 插入数据
cursor.execute(sql3) # 修改数据
cursor.execute(sql4) # 删除数据
conn.close() # 主动关闭链接 释放资源
二、truncate和delete的区别
1.基本语法
1.1 truncate
truncate table table_name(表名);
# 举例:
TRUNCATE TABLE order;
1.2 delete
delete from table_name(表名) where....;
# 举例:
DELETE FROM order;
1.3 语法的不同点
1.truncate后面只能加表名,直接删除表,无法where;
2.delete可以在后续加上where进行针对行的删除。
2.内存空间
2.1 truncate
删除表中的内容,不删除表结构,释放空间,即:truncate删除数据后重新写数据会从1开始。
2.2 delete
删除表中的内容,不删除表结构,不释放空间,即:delete删除数据后只会从删除前的最后一行续写。
3.处理速度
truncate操作中id直接从1开始,即全部清空开始;delete需要先得到当前行数,从而进行续写;所以truncate删除速度比delete快。