初學python,類比轉賬

來源:互聯網
上載者:User
# -*- coding: UTF-8 -*-import mysqlfrom mysql import connectoruser = 'root'pwd = '123456'host = '127.0.0.1'port = '3306'db = 'springmvc'# 轉賬類class TransferMoney(object):    # 建構函式    def __init__(self, conn):        self.conn = conn    # 實現轉賬邏輯    def transfer(self, source_accid, target_accid, money):        try:            self.check_acct_available(source_accid)            self.check_acct_available(target_accid)            self.has_enough_money(source_accid, money)            self.reduce_money(source_accid, money)            self.add_money(target_accid, money)            self.conn.commit()        except Exception as e:            self.conn.rollback()            raise e    # 檢驗賬戶是否存在    def check_acct_available(self, accid):        cursor = self.conn.cursor()        try:            sql = "SELECT * FROM bank WHERE account = %s" % accid            cursor.execute(sql)            rs = cursor.fetchall()            if len(rs) != 1:                raise Exception("帳號%s不存在" % accid)            if len(rs) == 1:                print("ok")        finally:            cursor.close()    # 檢驗是否有足夠money    def has_enough_money(self, accid, money):        cursor = self.conn.cursor()        try:            sql = "SELECT * FROM bank WHERE account = %s AND money > %s" % (accid, money)            cursor.execute(sql)            rs = cursor.fetchall()            if len(rs) != 1:                raise Exception("賬戶%s餘額不足" % accid)            if len(rs) == 1:                print("ok")        finally:            cursor.close()    # 開始扣錢    def reduce_money(self, accid, money):        cursor = self.conn.cursor()        try:            sql = "UPDATE bank SET money = money - %s WHERE account = %s" % (money, accid)            cursor.execute(sql)            if cursor.rowcount != 1:                raise Exception("賬戶%s扣款%s失敗" % (accid, money))            if cursor.rowcount == 1:                print("ok")        finally:            cursor.close()    # 開始加錢    def add_money(self, accid, money):        cursor = self.conn.cursor()        try:            sql = "UPDATE bank SET money = money + %s WHERE account = %s" % (money, accid)            cursor.execute(sql)            if cursor.rowcount != 1:                raise Exception("賬戶%s加錢%s失敗" % (accid, money))            if cursor.rowcount == 1:                print("ok")        finally:            cursor.close()# main方法if __name__ == "__main__":    print("輸入轉賬id:")    source_accid = input()    print("輸入收賬id:")    target_accid = input()    print("輸入收賬金額:")    money = input()    conn = mysql.connector.connect(user = user, password = pwd, host = host, port = port, database = db)    try:        tr_money = TransferMoney(conn)        tr_money.transfer(source_accid, target_accid, money)    except Exception as e:        print(e)    finally:        conn.close()

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.