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()

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章