python写的简单转账实例
#!/usr/bin/env python # -*- coding: utf-8 -*- # @Time : 2017/4/17 14:37 # @Author : xiaowei # @File : transer_money.py # @Software: PyCharm import sys import MySQLdb class TransferMoney(object): def __init__(self,conn): self.conn = conn def transfer(self,source_acctid,target_acctid,money): try: self.check_acct_available(source_acctid) self.check_acct_available(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 def check_acct_available(self, source_acctid): cursor = self.conn.cursor() try: sql = "select * from account where acctid = %s " %source_acctid cursor.execute(sql) print "check_acct_available:"+sql rs = cursor.fetchall() if len(rs) != 1: raise Exception("账号%s不存在" %source_acctid) finally: cursor.close() def has_enough_money(self, source_acctid, money): cursor = self.conn.cursor() try: sql = "select * from account where acctid = %s AND money >= %s" %(source_acctid,money) cursor.execute(sql) print "has_enough_money:" + sql rs = cursor.fetchall() if len(rs) != 1: raise Exception("账号%s没有足够的钱" % source_acctid) finally: cursor.close() def reduce_money(self,source_acctid,money): cursor = self.conn.cursor() try: sql = "update account set money = money - %s where acctid = %s " % (money,source_acctid) cursor.execute(sql) print "reduce_money:" + sql if cursor.rowcount !=1: raise Exception("账号%s减款失败" % source_acctid) finally: cursor.close() def add_money(self, source_acctid,money): cursor = self.conn.cursor() try: sql = "update account set money = money + %s where acctid = %s " % (money, source_acctid) cursor.execute(sql) print "reduce_money:" + sql if cursor.rowcount != 1: raise Exception("账号%s减款失败" % source_acctid) finally: cursor.close() 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='123', db='imooc', charset='UTF8' ) tr_money = TransferMoney(conn) try: tr_money.transfer(2,1,50) except Exception as e: print '出现问题:'+str(e) finally: conn.close()
如无特殊说明,文章均为本站原创,转载请注明出处
- 转载请注明来源:python写的简单转账实例
- 本文永久链接地址:http://www.hongxiaowei.com/xiaowei/481.html