本篇文章第一节用来介绍 Python3 使用 PyMySQL 连接数据库,并实现简单的增删改查;
第二节用来总结数据库中两种清空表数据方法的区别。
为了使python连接上数据库,你需要一个驱动,这个驱动是用于与数据库交互的库。
PyMySQL : 这是一个使Python连接到MySQL的库,它是一个纯Python库(文件夹)。PyMySQL 是一个纯 Python 实现的 MySQL 客户端操作库,支持事务、存取过程、批量执行,实现增删改查等。
使用以下命令进行安装:
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没有权限去操作,需要使用到二次确认才能进行增删改操作;
因此,针对增删改操作 需要二次确认才可生效。
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 # 涉及到增删改 自动二次确认)生成一个游标对象
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 语法的不同点
2.内存空间 2.1 truncate1.truncate后面只能加表名,直接删除表,无法where;
2.delete可以在后续加上where进行针对行的删除。
2.2 delete删除表中的内容,不删除表结构,释放空间,即:truncate删除数据后重新写数据会从1开始。
3.处理速度删除表中的内容,不删除表结构,不释放空间,即:delete删除数据后只会从删除前的最后一行续写。
truncate操作中id直接从1开始,即全部清空开始;delete需要先得到当前行数,从而进行续写;所以truncate删除速度比delete快。



