目录
1.注意事项:使用pymsql第三方库文件名不能使用pymysql,这是兵之大忌
一.pymysql的连接
1.注意事项:使用pymsql第三方库文件名不能使用pymysql,这是兵之大忌
2.pymysql的连接:
案例1:
# 1.导包 from pymysql import connect # 2.创建连接对象 conn = connect( host='localhost', user='root', port=3306, password='Fjp970214', database='py-1', charset='utf8' ) # 3.获取游标,目的就是要执行sql语句 cursor = conn.cursor() # 准备sql语句 sql = 'select * from student' # 4.执行sql语句,execute执行 cursor.execute(sql) # 获取查询的结果 row = cursor.fetchone() #查询的结果只有一条 print(row) # 5.关闭游标 cursor.close() # 6.关闭连接 conn.close()
案列2:
# 1.导包 from pymysql import connect # 2.创建连接对象 conn = connect( host='localhost', user='root', port=3306, password='Fjp970214', database='py-1', charset='utf8' ) # 3.获取游标,目的就是要执行sql语句 cursor = conn.cursor() # 准备sql语句 sql = 'select * from student' # 4.执行sql语句,execute执行 cursor.execute(sql) # 获取查询的结果 row = cursor.fetchall() # 可以查询到数据库中所有的数据 print(row) # 5.关闭游标 cursor.close() # 6.关闭连接 conn.close()分析结果:案列一与案列二最终的结果是以元组的形式呈现的,案列一只能查询到数据库当中的一条数据,案列二可以查询到数据库当中的所有数据
如果想要拿到一个一个的数据,可以进行for循环遍历
案例三:
# 1.导包 from pymysql import connect # 2.创建连接对象 conn = connect( host='localhost', user='root', port=3306, password='Fjp970214', database='py-1', charset='utf8' ) # 3.获取游标,目的就是要执行sql语句 cursor = conn.cursor() # 准备sql语句 sql = 'select * from student' # 4.执行sql语句,execute执行 cursor.execute(sql) # 获取查询的结果 row = cursor.fetchall() for i in row: print(i) # 5.关闭游标 cursor.close() # 6.关闭连接 conn.close()
二:对数据表进行添加,修改,删除等操作,我们需要把数据提交到数据库当中
注意:提交修改的数据到数据库中
1.conn.commit()
# 1.导包 from pymysql import connect # 2.创建连接对象 conn = connect( host='localhost', port=3306, user='root', password='Fjp970214', database='py-1', charset='utf8' ) # 3.获取游标,目的就是执行sql语句 cursor = conn.cursor() # 准备sql语句 sql = "delete from student where id between 4 and 5" # 4.执行sql语句,execute执行 cursor.execute(sql) # 提交修改的数据到数据库 conn.commit() # 5.关闭游标 cursor.close() # 6.关闭连接 conn.close()
注释:只有将数据提交到数据库中,才会在数据库中显示修改的结果,否则修改的结果就是在缓冲空间当中,不会在数据库中显示
2.回滚
coon.rollback()表示回滚数据
# 1.导包
from pymysql import connect
# 2.创建连接对象
conn = connect(
host='localhost',
port=3306,
user='root',
password='Fjp970214',
database='py-1',
charset='utf8'
)
# 3.获取游标,目的就是执行sql语句
cursor = conn.cursor()
# 准备sql语句
sql = "delete from student where id between 4 and 5"
# 4.执行sql语句,execute执行
try:
cursor.execute(sql)
# 提交修改的数据到数据库
conn.commit()
except Exception as e:
# 如果sql语句发生异常进行撤销,表示数据回滚,回滚就是回到没有修改数据之前的一个状态
conn.rollback()
# 5.关闭游标
cursor.close()
# 6.关闭连接
conn.close()
注释:进行回滚操作的时候,操作4会发生些许的变化
总结:
1.导包
import pymysql
2.创建连接对象
conn = pymysql.connect(参数)
3.获取游标对象
cursor = conn.cursor()
4.执行sql语句
row=cursor.execute(sql)
5.获取查询的结果
cursor.fetchone() #只获取一条数据
cursor.fechall() #可以获取全部的数据
6..将修改的操作提交到数据库中
conn.comit()
7.回滚数据
conn.rollback()
三.事务的介绍
1.定义:事务就是用户定义的一系列执行sql语句的操作,这些操作要么完全的执行,要不完全的都不执行,它是一个完全不可分割的工作执行单元。
2.事务的四大特性:
- 原子性
- 一致性
- 隔离性
- 持久性
3.在使用事务之前,首先必须确定存储类型是不是InnoDB,只有这个类型才可以使用事务。
MYSQL数据库中表的存储引擎默认是InnoDB
表的存储引擎:表的存储引擎就是提供存储数据的一种体制,不同表的存储引擎提供不同的存储机制
#查看MYSQL数据库支持的表的存储引擎
show engines;
说明:我们常用的表的存储引擎是InnoDB和MYISAM
只有InnoDB才具有索引
而MYISAM不支持索引,优势是访问速度快,对事务没有要求,或者以select,insert为主的都可以使用该存储引擎来创建表
4.想要修改表的存储引擎:alter table 表名 engines=引擎类型
5.(1)开启事务:
begin;
或者
start transaction;
(2)取消自动提交
set autocommit=0; # 取消自动提交
set autocommit=1; #设置为自动提交
(3)sql语句的执行
(4)手动提交
commit; 如果不进行手动提交,则结果不会显示到数据库当中、
rollback;
注意:
- 开启事务执行修改命令,变更数据会保存到MYSQL服务端的缓冲文件中,而不是维护到物理表
- MYSQL数据库默认采用自动提交的模式,如果没有显示的开启一个事务,那么每条sql语句都会被当作一个事务执行提交操作
- 当设置autocommit=0,就是取消了自动提交事务模式,直到显示的执行commit和rollback表示该事务结束
提交事务:commit
将本地缓冲文件中的数据提交到物理表中,完成数据的更新
回滚事务:rollback
放弃本地缓冲中的缓冲数据,表示回到开始事务前的状态
五:索引
1定义:索引在MYSQL当中也叫做“键”,它是一个特殊的文件,它保存这着数据表里所有记录的位置信息。
2.索引的使用
(1)查看表中已有的索引
show index from 表名;
(2).索引的创建
alter table 表名 add index 索引列名(列名);
alter table classes add index my_name(name);
(3)索引的删除
alter table classes drop index my_name;
六.案例的操作:验证索引的查询性能
1.创建测试表mytest
create table mytext(title varchar(50) not null);
2.向表中插入10万条数据:
from pymysql import connect
def main():
conn = connect(
host='localhost',
port=3306,
user='root',
password='Fjp970214',
database='py-1',
charset='utf8'
)
cursor = conn.cursor()
sql = 'insert into mytest(title) values(%s)'
# 插入10万条数据:
try:
for i in range(100000):
cursor.execute(sql, ["test"+str(i)])
conn.commit()
except Exception as e:
conn.rollback()
finally:
cursor.close()
conn.close()
if __name__ == '__main__':
main()
3.验证索引性能操作
开启运行时间检测:
set profiling=1;
查找第一万条数据: test9999
select * from mytest where title = 'test9999';
查看执行的时间
show profiles;
给title字段创建索引
alter table mytest add index(title);
本文介绍了如何使用Python的pymysql库连接MySQL数据库,包括建立连接、执行SQL(查询、添加、修改、删除)以及事务处理。同时,讨论了MySQL的事务特性,强调了InnoDB存储引擎对于事务的支持,并展示了如何开启和管理事务。此外,还探讨了索引的概念,如何创建和删除索引,并通过案例验证了索引对查询性能的影响。



6万+

被折叠的 条评论
为什么被折叠?



