python写的简单转账实例

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()
0
如无特殊说明,文章均为本站原创,转载请注明出处

该文章由 发布

这货来去如风,什么鬼都没留下!!!