python-mysql 事务-索引

mysql 事务:是一个序列操作,这些操作要么都执行,要么都不执行。是一个不可分割的单位。

1 事务的四大特性(ACID):原子性+一致性+隔离性+持久性(银行转账例子)
原子性:每一个事务都是一个不可分割的最小单元;
一致性:一个事务从一个一致性状态转换成另一个一致性状态;
隔离性:一个事务所做的修改另一个事务是看不见的。
永久性:一旦一个事务commit提交了数据,数据将永久保存。
2.** 事务过程**:
1)开启事务:start transaction; 或者begin;
2) 执行事务: select * from …
update 表名 …set…
3)提交:commit;

  1. 事务 Mysql中默认所有的操作都是一个事务。增删改中使用,查不需要。以张三给李四转600元为例。

#!/usr/bin/python

# -*- coding: UTF-8 -*-

import MySQLdb  

#包的导入

db = MySQLdb.connect("ip地址,本机为localhost""用户名","密码","表名")

#打开数据库的连接 

cursor = db.cursor()

#使用cursor()方法获得操作游标

try:
   # 执行sql语句
   cursor.execute("update account set money=money-600 where name='zhangsan'")
   cursor.execute("update account set money=money+600 where name='lisi'")
   # 提交到数据库执行
   db.commit()
except:
   # 发生错误时回滚    回滚到获取游标的位置开始重新执行  看代码上面的文字有说明
   db.rollback()

db.close()

#关闭数据库的连接

索引:索引是一种特殊文件,它们包含着数据表中左右记录的引用指针。

索引的目的:提高查询效率
索引的使用
1.创建索引表
create index 索引名 on 表名(字段名称(约束长度));
2.删除suoyin
drop index 索引名 on表名;
3. 查看索引
show index from 表名;
4.查看执行时间
show profiles;
注意:
建立太多的索引将会影响更新和插入的速度,因为它需要同样更新每个索引文件,对于一个经常需要更新和插入的表格,就没有必要为一个很少使用where 自居单独建立索引,建立索引会占用磁盘空间

索引demo

create table test_index(title varchar(10))
from pymysql import connect
def main():
	#建立连接
	conn = connect(host='127.0.0.1',port=3306,database='jing_dong',user='root',password='mysql');
	# 创建游标
	cursor =conn.cursor();
	for i in range 100000:
		# 插入数据100000条
		cursor.execute("inset into text_index values('ha-%d')"% i)
	# 提交数据
	conn.commit()
if __name_ =="__main__":
	main()

你可能感兴趣的:(python-mysql 事务-索引)