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程序设计有所帮助。