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
该文章由 xiaowei 发布
这货来去如风,什么鬼都没留下!!!