day03索引事务与python交互

一、索引

1.索引的作用

不使用索引,MySQL必须从第1条记录开始然后读完整个表直到找出相关的行。
表越大,花费的时间越多。如果表中查询的列有一个索引,MySQL能快速到达
一个位置去搜寻到数据文件的中间,没有必要看所有数据。

2.索引操作

2.1 查看索引

#基本语法:
	show index from tablename;
#示例:
	show index from user\G;
#示例说明:
	查看user表的索引结构

2.2 创建表时声明索引

primary key(字段) 
index (字段)
unique (字段)

create table user (
	id int auto_increment,
	name varchar(20),
	primary key(id),
	unique (name)
);

2.3 删除索引

#基本语法:
	ALTER TABLE table_name DROP INDEX index_name
#示例:
	alter table money drop index age;
#示例说明:
	#为money表删除age索引

3.索引分类

3.1 普通索引

#基本语法:
	alter tableadd index(字段)
#示例:
	alter table money add index(username);
#示例说明:
	#为money表的username字段增加索引

3.2 唯一索引

#基本语法:
	alter tableadd unique(字段)
#示例:
	alter table money add unique(email);
#示例说明:
	#为money表的email字段增加唯一索引

3.3 主键索引

#基本语法:
	alter tableadd primary key(字段)
#示例:
	alter table money add primary key(id);
#示例说明:
	为money表的id字段增加主键索引

二、事务

说白了就是为了数据的安全不被破坏
事务可以看作是一个“容器”,将多条语句,放入该容器,最后,只要一个命令行,来决定其中的所有语句是否“执行”

一般来说,事务是必须满足4个条件(ACID):
原子性(Atomicity,或称不可分割性)、
一致性(Consistency)、
隔离性(Isolation,又称独立性)、
持久性(Durability)。

1.事物的原理

传统的情况
事务原理

2.事物的流程

1.start transaction
2.相关操作
3.commit
4.[rollback]
如果在事务执行过程中,发生了错误,则可以使用rollback命令回滚到上一个事务操作

三、Python交互

1.连接MySQL

import pymysql

# 连接mysql
# 参数1:表示主机或ip地址
# 参数2:表示mysql的用户名
# 参数3:表示mysql的密码
# 参数4:表示mysql的数据库名
# conn = pymysql.connect('localhost', 'root', 'root', 'mydb2')
conn = pymysql.connect('10.36.132.6', 'root', 'root', 'mydb2')
# 创建游标对象: 可以执行sql语句
cursor = conn.cursor()

# sql语句
sql = 'select version()'

# 执行sql语句
cursor.execute(sql)

res = cursor.fetchone()
print(res)

# 关闭游标对象
cursor.close()
# 关闭mysql的连接
conn.close()

2.数据操作

import pymysql

conn = pymysql.connect('localhost', 'root', 'root', 'mydb2')
cursor = conn.cursor()

# 插入数据
sql = 'insert into person(name, age) values("aa", 20)'

# 删除数据
sql1 = 'delete from person where id=18'

# 更新数据
sql2 = 'update person set age=30 where id=20'

try:
    cursor.execute(sql)
    cursor.execute(sql1)
    cursor.execute(sql2)
    # 提交事务
    conn.commit()
except:
    # 回滚
    conn.rollback()

cursor.close()
conn.close()

3.数据查询

关键方法:fetchone() [可联想迭代器的next()] fetchall() fetchmany()

import pymysql

conn = pymysql.connect('localhost', 'root', 'root', 'mydb2', charset='utf8')
cursor = conn.cursor()

# 查询数据
sql = 'select * from person'
# 执行sql
cursor.execute(sql)

# fetchone() : 每次查询下一条数据
# res = cursor.fetchone()
# print(res)
# res = cursor.fetchone()
# print(res)
# res = cursor.fetchone()
# print(res)

# fetchall() : 所有数据
res = cursor.fetchall()
# res = cursor.fetchmany(3)  # 前3条数据
for row in res:
    print(row)

print(cursor.rowcount)  # 总的数据条数

cursor.close()
conn.close()

总结:基本框架是连接MySQL给一个对象(参照文件的打开与关闭)------创建游标对象-------执行sql语句-----关闭游标对象-----关闭MySQL连接

猜你喜欢

转载自blog.csdn.net/qq_37783111/article/details/107697379