mysql 事務:是一個序列操作,這些操作要麼都執行,要麼都不執行。是一個不可分割的單位。
1 事務的四大特性(ACID):原子性+一致性+隔離性+持久性(銀行轉賬例子)
原子性:每一個事務都是一個不可分割的最小單元;
一致性:一個事務從一個一致性狀態轉換成另一個一致性狀態;
隔離性:一個事務所做的修改另一個事務是看不見的。
永久性:一旦一個事務commit提交了數據,數據將永久保存。
2.** 事務過程**:
1)開啓事務:start transaction; 或者begin;
2) 執行事務: select * from …
update 表名 …set…
3)提交:commit;
- 事務 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()