-
-
-
import MySQLdb
-
db=MySQLdb.connect(host='localhost',user='root',passwd='123',db='08day5')
-
cur=db.cursor(cursorclass=MySQLdb.cursors.DictCursor)
-
-
-
cur.execute('DROP TABLE IF EXISTS EMPLOYEE')
-
-
sql=''
-
-
-
-
-
-
-
-
cur.execute(sql)
-
-
sql=''
-
-
try:
-
cur.execute(sql)
-
db.commit()
-
except:
-
db.rollback()
-
-
sql="INSERT INTO EMPLOYEE(first_name,last_name,\
-
age,sex,income) \
-
VALUES('%s','%s','%d','%c','%f')" % \
-
('wuji','zhang',34,'M',3400.8)
-
try:
-
cur.execute(sql)
-
db.commit()
-
except:
-
print 'there is some error!'
-
db.rollback()
-
-
sql="SELECT * FROM EMPLOYEE WHERE income > '%d'" % (1000)
-
try:
-
cur.execute(sql)
-
results=cur.fetchall()
-
print results
-
except:
-
print 'there is some error!'
-
-
sql="UPDATE EMPLOYEE SET AGE=AGE+1 WHERE SEX='%c'" % ('M')
-
try:
-
cur.execute(sql)
-
db.commit()
-
except:
-
db.rollback()
-
-
sql="DELETE FROM EMPLOYEE WHERE age>'%d'" % (20)
-
try:
-
cur.execute(sql)
-
db.commit()
-
except:
-
db.rollback()
-
cur.close()
-
db.close()
執行事務
事務機制可以確保數據一致性。
事務應該具有4個屬性:原子性、一致性、隔離性、持久性。這四個屬性通常稱爲ACID特性。
原子性(atomicity)。一個事務是一個不可分割的工作單位,事務中包括的諸操作要麼都做,要麼都不做。
一致性(consistency)。事務必須是使數據庫從一個一致性狀態變到另一個一致性狀態。一致性與原子性是密切相關的。
隔離性(isolation)。一個事務的執行不能被其他事務干擾。即一個事務內部的操作及使用的數據對併發的其他事務是隔離的,併發執行的各個事務之間不能互相干擾。
持久性(durability)。持續性也稱永久性(permanence),指一個事務一旦提交,它對數據庫中數據的改變就應該是永久性的。接下來的其他操作或故障不應該對其有任何影響。
Python DB API 2.0 的事務提供了兩個方法 commit 或 rollback。
對於支持事務的數據庫, 在Python數據庫編程中,當遊標建立之時,就自動開始了一個隱形的數據庫事務。
commit()方法提交遊標的所有更新操作,rollback()方法回滾當前遊標的所有操作。每一個方法都開始了一個新的事務。