国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Python > 正文

Python實現完整的事務操作示例

2020-01-04 16:52:06
字體:
來源:轉載
供稿:網友

本文實例講述了Python事務操作實現方法。分享給大家供大家參考,具體如下:

#coding=utf-8import sysimport MySQLdbclass 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 eif __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程序設計有所幫助。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 桃江县| 平凉市| 汝州市| 龙胜| 历史| 建湖县| 通海县| 巴林右旗| 商丘市| 曲阜市| 安宁市| 揭东县| 枣阳市| 克什克腾旗| 弋阳县| 铁力市| 邢台市| 从江县| 三明市| 山阳县| 光泽县| 双江| 江阴市| 江北区| 磴口县| 革吉县| 顺昌县| 玉树县| 忻州市| 寻甸| 定兴县| 鲁山县| 元氏县| 明星| 平远县| 沽源县| 安国市| 古浪县| 广南县| 广南县| 韶关市|