本文实例讲述了Python事务操作实现方法。分享给大家供大家参考,具体如下:
#coding=utf-8
import sys
import MySQLdb
class TransferMoney(object):
def __init__(self,conn):
self.conn = conn
#检查账户是否合法
def check_acct_avaiable(self,acctid):
cursor = self.conn.cursor()
try:
sql = "select * from account where acctid=%s" % acctid
cursor.execute(sql)
print "check account:" + sql
rs = cursor.fetchall()
if len(rs) != 1:
raise Exception("account %s illega" % acctid)
finally:
cursor.close()
#检查是否有足够的钱
def has_enough_money(self,acctid,money):
cursor = self.conn.cursor()
try:
sql = "select * from account where acctid=%s and money > %s" % (acctid,money)
cursor.execute(sql)
print "has enough money:" + sql
rs = cursor.fetchall()
if len(rs) != 1:
raise Exception("account %s not enough money" % acctid)
finally:
cursor.close()
#账户减钱
def reduce_money(self,acctid,money):
cursor = self.conn.cursor()
try:
sql = "update account set money = money-%s where acctid = %s" % (money,acctid)
cursor.execute(sql)
print "reduce_money:" + sql
if cursor.rowcount != 1:
raise Exception("reduce money fail %s" % acctid)
finally:
cursor.close()
#账户加钱
def add_money(self,acctid,money):
cursor = self.conn.cursor()
try:
sql = "update account set money = money+%s where acctid = %s" % (money,acctid)
cursor.execute(sql)
print "add_money:" + sql
if cursor.rowcount != 1:
raise Exception("add money fail %s" % acctid)
finally:
cursor.close()
#主执行语句
def transfer(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()
except Exception as e:
self.conn.rollback()
raise e
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)
except Exception as e:
print "Happen:" + str(e)
finally:
conn.close()
更多关于Python相关内容感兴趣的读者可查看本站专题:《Python常见数据库操作技巧汇总》、《Python编码操作技巧总结》、《Python数据结构与算法教程》、《Python Socket编程技巧总结》、《Python函数使用技巧总结》、《Python字符串操作技巧汇总》、《Python入门与进阶经典教程》及《Python文件与目录操作技巧汇总》
希望本文所述对大家Python程序设计有所帮助。
# Python
# 事务操作
# 讲解如何利用 Python完成 Saga 分布式事务
# python实现redis三种cas事务操作
# Python sqlite3事务处理方法实例分析
# python django事务transaction源码分析详解
# 使用Python的Django框架实现事务交易管理的教程
# Python ORM框架SQLAlchemy学习笔记之数据添加和事务回滚介绍
# Python 处理数据库事务的操作方法
# 操作技巧
# 进阶
# 相关内容
# 的钱
# 感兴趣
# 数据结构
# 给大家
# 更多关于
# 所述
# 程序设计
# 使用技巧
# 是否合法
# 编程技巧
# 讲述了
# 有足够
# account
# select
# print
# execute
# acctid
相关文章:
兔展官网 在线制作,怎样制作微信请帖?
网站制作报价单模板图片,小松挖机官方网站报价?
外贸公司网站制作,外贸网站建设一般有哪些步骤?
如何在搬瓦工VPS快速搭建网站?
打鱼网站制作软件,波克捕鱼官方号怎么注册?
制作电商网页,电商供应链怎么做?
制作网站的软件免费下载,免费制作app哪个平台好?
如何在云虚拟主机上快速搭建个人网站?
如何用PHP快速搭建CMS系统?
如何零成本快速生成个人自助网站?
网站视频怎么制作,哪个网站可以免费收看好莱坞经典大片?
正规网站制作公司有哪些,目前国内哪家网页网站制作设计公司比较专业靠谱?口碑好?
建站之星后台管理:高效配置与模板优化提升用户体验
建站之星会员如何解锁更多建站功能?
,柠檬视频怎样兑换vip?
海南网站制作公司有哪些,海口网是哪家的?
制作网站的网址是什么,请问后缀为.com和.com.cn还有.cn的这三种网站是分别是什么类型的网站?
php json中文编码为null的解决办法
头像制作网站在线制作软件,dw网页背景图像怎么设置?
建站之星导航如何优化提升用户体验?
专业型网站制作公司有哪些,我设计专业的,谁给推荐几个设计师兼职类的网站?
c# 在高并发下使用反射发射(Reflection.Emit)的性能
成都网站制作价格表,现在成都广电的单独网络宽带有多少的,资费是什么情况呢?
建站上传速度慢?如何优化加速网站加载效率?
seo网站制作优化,网站SEO优化步骤有哪些?
专业制作网站的公司哪家好,建立一个公司网站的费用.有哪些部分,分别要多少钱?
如何在服务器上配置二级域名建站?
建站之星如何配置系统实现高效建站?
建站org新手必看:2024最新搭建流程与模板选择技巧
小说建站VPS选用指南:性能对比、配置优化与建站方案解析
宝塔建站无法访问?如何排查配置与端口问题?
专业网站设计制作公司,如何制作一个企业网站,建设网站的基本步骤有哪些?
如何在景安云服务器上绑定域名并配置虚拟主机?
高防服务器如何保障网站安全无虞?
高防服务器租用如何选择配置与防御等级?
建站之星免费版是否永久可用?
实例解析Array和String方法
做企业网站制作流程,企业网站制作基本流程有哪些?
linux top下的 minerd 木马清除方法
如何快速生成ASP一键建站模板并优化安全性?
宝塔新建站点报错如何解决?
如何在阿里云通过域名搭建网站?
深圳网站制作公司好吗,在深圳找工作哪个网站最好啊?
如何在企业微信快速生成手机电脑官网?
如何通过商城免费建站系统源码自定义网站主题?
无锡制作网站公司有哪些,无锡优八网络科技有限公司介绍?
建站主机空间推荐 高性价比配置与快速部署方案解析
头像制作网站在线观看,除了站酷,还有哪些比较好的设计网站?
胶州企业网站制作公司,青岛石头网络科技有限公司怎么样?
php条件判断怎么写_ifelse和switchcase的使用区别【对比】
*请认真填写需求信息,我们会在24小时内与您取得联系。