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

首頁 > 編程 > Python > 正文

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

2019-11-25 16:05:04
字體:
來源:轉載
供稿:網友

本文實例講述了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相關內容感興趣的讀者可查看本站專題:《Python常見數據庫操作技巧匯總》、《Python編碼操作技巧總結》、《Python數據結構與算法教程》、《Python Socket編程技巧總結》、《Python函數使用技巧總結》、《Python字符串操作技巧匯總》、《Python入門與進階經典教程》及《Python文件與目錄操作技巧匯總

希望本文所述對大家Python程序設計有所幫助。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 丹东市| 镇江市| 荆州市| 南漳县| 诸暨市| 德安县| 普陀区| 得荣县| 博乐市| 霞浦县| 亳州市| 休宁县| 汨罗市| 九龙坡区| 静海县| 南皮县| 卢氏县| 普兰县| 扶绥县| 肇庆市| 辉南县| 和政县| 广丰县| 德格县| 温泉县| 顺义区| 缙云县| 甘德县| 遵化市| 行唐县| 光山县| 烟台市| 石柱| 徐水县| 兴化市| 沂源县| 灵川县| 独山县| 阜新市| 林州市| 荥阳市|