-
-
-
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()方法回滚当前游标的所有操作。每一个方法都开始了一个新的事务。