zoukankan      html  css  js  c++  java
  • 四.mysql演示银行转账

    代码演示:

     1 #conding:utf8
     2 import pymysql
     3 import sys
     4 
     5 class TransferMoney(object):
     6     def __init__(self,conn):
     7         self.conn=conn
     8     def check_acct_available(self,acctid):
     9         cursor = self.conn.cursor()
    10         try:
    11             cursor=self.conn.cursor()
    12             sql="select * from account where acctid=%s"%acctid
    13             cursor.execute(sql)
    14             print("check_acct_available:"+sql)
    15             rs=cursor.fetchall()
    16             if len(rs)!=1:
    17                 raise Exception("账号%s不存在:"%acctid)
    18         finally:
    19             cursor.close()
    20 
    21     def has_enough_money(self,acctid,money):
    22         cursor = self.conn.cursor()
    23         try:
    24             cursor = self.conn.cursor()
    25             sql = "select * from account where acctid=%s and money>%s" % (acctid,money)
    26             cursor.execute(sql)
    27             print("has_enough_money:" + sql)
    28             rs = cursor.fetchall()
    29             if len(rs) != 1:
    30                 raise Exception("账号%s没有足够的钱:" % acctid)
    31         finally:
    32             cursor.close()
    33     def reduce_money(self,acctid,money):
    34         cursor = self.conn.cursor()
    35         try:
    36             cursor = self.conn.cursor()
    37             sql = "update account set money = money-%s where acctid=%s" % (money,acctid)
    38             cursor.execute(sql)
    39             print("reduce_money:" + sql)
    40             rs = cursor.fetchall()
    41             if cursor.rowcount!=1:
    42                 raise Exception("账号%s减款失败:" % acctid)
    43         finally:
    44             cursor.close()
    45 
    46     def add_money(self,acctid,money):
    47         cursor = self.conn.cursor()
    48         try:
    49             cursor = self.conn.cursor()
    50             sql = "update account set money = money+%s where acctid=%s" % (money, acctid)
    51             cursor.execute(sql)
    52             print("add_money:" + sql)
    53             rs = cursor.fetchall()
    54             if cursor.rowcount != 1:
    55                 raise Exception("账号%s加款失败:" % acctid)
    56         finally:
    57             cursor.close()
    58 
    59 
    60     def transfer(self,source_acctid,target_acctid,money):
    61         '''检查付款人和收款人账号是否存在,检查付款人是否有足够的钱'''
    62         try:
    63             self.check_acct_available(source_acctid)
    64             self.check_acct_available(target_acctid)
    65             self.has_enough_money(source_acctid,money)
    66             self.reduce_money(source_acctid,money)
    67             self.add_money(target_acctid,money)
    68             self.conn.commit()
    69         except Exception as e:
    70              self.conn.rollback()
    71              raise e
    72 
    73 
    74 
    75 if __name__=="__main__":
    76     '''付款人账号id,收款人账号id,转账金额'''
    77     source_acctid=sys.argv[1]
    78     target_acctid=sys.argv[2]
    79     money=sys.argv[3]
    80     conn=pymysql.connect(
    81         host='192.168.199.249',
    82         port=3306,
    83         user='root',
    84         passwd='123456',
    85         db='imooc',
    86         charset='utf8'
    87     )
    88     tr_money=TransferMoney(conn)
    89 
    90     try:
    91         tr_money.transfer(source_acctid,target_acctid,money)
    92     except Exception as e:
    93         print("出现问题:"+str(e))
    94     finally:
    95         conn.close()
  • 相关阅读:
    php面向对象 小题记
    php设计模式 Composite (组合模式)
    php设计模式 FlyWeight (享元模式)
    优化 PHP 代码的 40 条建议
    小试QueryPath,一个实现了不少jQuery接口的PHP类库
    PHP处理提交的JSON数据
    web test automation test / QTP / IBM RFT / Selenium IDE / IOS appium / AU3
    web test LoadRunner error list / error log
    web test LoadRunner tomcat / websphere
    OS + Linux/Unix download tools curl / wget
  • 原文地址:https://www.cnblogs.com/chenshaoping/p/8563676.html
Copyright © 2011-2022 走看看