'''
Created on 2017-1-11
@author: vcc
'''
#codeing:utf8
import sys
import MySQLdb
class TransferMoney(object):
def __init__(self,conn):
self.conn = conn
def check_account_avaliable(self, source_id):
cursor=self.conn.cursor()
try:
sql = "select * from acount where acount_id = %s"%source_id
cursor.execute(sql)
rs=cursor.fetchall()
print sql
if len(rs) !=1:
raise Exception("dont have this acount")
finally:
cursor.close()
def reduce_money(self, money,source_id):
cursor=self.conn.cursor()
try:
sql = "update acount set money=money-%s where acount_id=%s"%(money,source_id)
cursor.execute(sql)
#rs=cursor.fetchall()
print sql
if cursor.rowcount !=1:
raise Exception("transfer failed")
finally:
cursor.close()
def check_have_enoughmoney(self, source_id, money):
cursor=self.conn.cursor()
try:
sql="select * from acount where acount_id = %s and money >%s "%(source_id,money)
cursor.execute(sql)
rs=cursor.fetchall()
print sql
if len(rs) !=1:
raise Exception(" your money isnt enough")
finally:
cursor.close()
def add_money(self, money, target_id):
cursor=self.conn.cursor()
try:
sql = "update acount set money=money+%s where acount_id=%s"%(money,target_id)
cursor.execute(sql)
#rs=cursor.fetchall()
print sql
if cursor.rowcount !=1:
raise Exception("tansfer failed")
finally:
cursor.close()
def transfer(self,source_id,target_id,money):
try:
self.check_account_avaliable(source_id)
self.check_account_avaliable(target_id)
self.check_have_enoughmoney(source_id,money)
self.reduce_money(money,source_id)
self.add_money(money,target_id)
self.conn.commit()
except Exception as e:
self.conn.rollback()
raise e
if __name__ == "__main__":
source_id = sys.argv[1]
target_id = sys.argv[2]
money = sys.argv[3]
conn=MySQLdb.connect(host = 'localhost',
port = 3306,
user = 'root',
passwd = 'yangqi199474',
db = 'test',
charset = 'utf8')
tr_money=TransferMoney(conn)
try:
tr_money.transfer(source_id,target_id,money)
except Exception as e:
print str(e)
finally:
conn.close()
Created on 2017-1-11
@author: vcc
'''
#codeing:utf8
import sys
import MySQLdb
class TransferMoney(object):
def __init__(self,conn):
self.conn = conn
def check_account_avaliable(self, source_id):
cursor=self.conn.cursor()
try:
sql = "select * from acount where acount_id = %s"%source_id
cursor.execute(sql)
rs=cursor.fetchall()
print sql
if len(rs) !=1:
raise Exception("dont have this acount")
finally:
cursor.close()
def reduce_money(self, money,source_id):
cursor=self.conn.cursor()
try:
sql = "update acount set money=money-%s where acount_id=%s"%(money,source_id)
cursor.execute(sql)
#rs=cursor.fetchall()
print sql
if cursor.rowcount !=1:
raise Exception("transfer failed")
finally:
cursor.close()
def check_have_enoughmoney(self, source_id, money):
cursor=self.conn.cursor()
try:
sql="select * from acount where acount_id = %s and money >%s "%(source_id,money)
cursor.execute(sql)
rs=cursor.fetchall()
print sql
if len(rs) !=1:
raise Exception(" your money isnt enough")
finally:
cursor.close()
def add_money(self, money, target_id):
cursor=self.conn.cursor()
try:
sql = "update acount set money=money+%s where acount_id=%s"%(money,target_id)
cursor.execute(sql)
#rs=cursor.fetchall()
print sql
if cursor.rowcount !=1:
raise Exception("tansfer failed")
finally:
cursor.close()
def transfer(self,source_id,target_id,money):
try:
self.check_account_avaliable(source_id)
self.check_account_avaliable(target_id)
self.check_have_enoughmoney(source_id,money)
self.reduce_money(money,source_id)
self.add_money(money,target_id)
self.conn.commit()
except Exception as e:
self.conn.rollback()
raise e
if __name__ == "__main__":
source_id = sys.argv[1]
target_id = sys.argv[2]
money = sys.argv[3]
conn=MySQLdb.connect(host = 'localhost',
port = 3306,
user = 'root',
passwd = 'yangqi199474',
db = 'test',
charset = 'utf8')
tr_money=TransferMoney(conn)
try:
tr_money.transfer(source_id,target_id,money)
except Exception as e:
print str(e)
finally:
conn.close()