您的位置:首页 > 编程语言 > Python开发

基于python3.6连接mysql,实现一个银行转账的小功能(源码)

2018-01-14 21:26 876 查看
import pymysql

class TransferMoney:
def __init__(self,conn):
self.conn = conn
def check_acct_available(self,acctid):
try:
cursor = self.conn.cursor()
sql = "select * from account where acctid = %s" %acctid
cursor.execute(sql)
print("check_acct_available"+sql)
rs = cursor.fetchall()
if len(rs) !=1:
raise Exception("account %s is not exist" % acctid)
finally:
cursor.close()
def has_enough_money(self,acctid,money):
try:
cursor = self.conn.cursor()
sql = "select * from account where acctid = %s and money>= %s" % (acctid,money)
cursor.execute(sql)
print("has_enough_money" + sql)
rs = cursor.fetchall()
if len(rs) != 1:
raise Exception("account %s does't have enough money" % acctid)
finally:
cursor.close()
def reduce_money(self,acctid,money):
try:
cursor = self.conn.cursor()
sql = "update account set money = money - %s where acctid = %s" % (money,acctid)
cursor.execute(sql)
print("reduce_money" + sql)
rs = cursor.rowcount
if rs != 1:
raise Exception("account %s transfer is't successful" % acctid)
finally:
cursor.close()
def add_money(self,acctid,money):
try:
cursor = self.conn.cursor()
sql = "update account set money = money + %s where acctid = %s" % (money,acctid)
cursor.execute(sql)
print("add_money" + sql)
rs = cursor.rowcount
if rs != 1:
raise Exception("account %s transfer is't successful" % acctid)
finally:
cursor.close()
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
#if __name__ == "__main__":
#source_acctid = sys.argv[1]
#target_acctid = sys.argv[2]
#money = sys.argv[3]

conn = pymysql.Connect(
host = '*******',
port =3306,
user = 'root',
passwd = '*************',
db = 'python'

)
source_acctid = int(input("Input source_acctid"))
target_acctid = int(input("Input target_acctid"))
money = int(input("Input tansfer money "))
tr_money = TransferMoney(conn)
try:
tr_money.transfer(source_acctid,target_acctid,money)
except Exception as e:
print("raise Error"+str(e))
finally:
conn.close()
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: