Python实现完整的事务操作示例
本文实例讲述了Python事务操作实现方法。分享给大家供大家参考,具体如下:
#coding=utf-8
importsys
importMySQLdb
classTransferMoney(object):
def__init__(self,conn):
self.conn=conn
#检查账户是否合法
defcheck_acct_avaiable(self,acctid):
cursor=self.conn.cursor()
try:
sql="select*fromaccountwhereacctid=%s"%acctid
cursor.execute(sql)
print"checkaccount:"+sql
rs=cursor.fetchall()
iflen(rs)!=1:
raiseException("account%sillega"%acctid)
finally:
cursor.close()
#检查是否有足够的钱
defhas_enough_money(self,acctid,money):
cursor=self.conn.cursor()
try:
sql="select*fromaccountwhereacctid=%sandmoney>%s"%(acctid,money)
cursor.execute(sql)
print"hasenoughmoney:"+sql
rs=cursor.fetchall()
iflen(rs)!=1:
raiseException("account%snotenoughmoney"%acctid)
finally:
cursor.close()
#账户减钱
defreduce_money(self,acctid,money):
cursor=self.conn.cursor()
try:
sql="updateaccountsetmoney=money-%swhereacctid=%s"%(money,acctid)
cursor.execute(sql)
print"reduce_money:"+sql
ifcursor.rowcount!=1:
raiseException("reducemoneyfail%s"%acctid)
finally:
cursor.close()
#账户加钱
defadd_money(self,acctid,money):
cursor=self.conn.cursor()
try:
sql="updateaccountsetmoney=money+%swhereacctid=%s"%(money,acctid)
cursor.execute(sql)
print"add_money:"+sql
ifcursor.rowcount!=1:
raiseException("addmoneyfail%s"%acctid)
finally:
cursor.close()
#主执行语句
deftransfer(self,source_acctid,target_acctid,money):
try:
self.check_acct_avaiable(source_acctid)
self.check_acct_avaiable(target_acctid)
self.has_enough_money(source_acctid,money)
self.reduce_money(source_acctid,money)
self.add_money(target_acctid,money)
self.conn.commit()
exceptExceptionase:
self.conn.rollback()
raisee
if__name__=="__main__":
source_acctid=sys.argv[1]
target_acctid=sys.argv[2]
money=sys.argv[3]
conn=MySQLdb.Connect(host='127.0.0.1',port=3306,user='root',passwd='',db='test',charset='utf8')
tr_money=TransferMoney(conn)
try:
tr_money.transfer(source_acctid,target_acctid,money)
exceptExceptionase:
print"Happen:"+str(e)
finally:
conn.close()
更多关于Python相关内容感兴趣的读者可查看本站专题:《Python常见数据库操作技巧汇总》、《Python编码操作技巧总结》、《Python数据结构与算法教程》、《PythonSocket编程技巧总结》、《Python函数使用技巧总结》、《Python字符串操作技巧汇总》、《Python入门与进阶经典教程》及《Python文件与目录操作技巧汇总》
希望本文所述对大家Python程序设计有所帮助。