全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

Python实现完整的事务操作示例

本文实例讲述了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小时内与您取得联系。