python中基于mysql数据库银行转账功能的实现
2019-01-17 17:31
501 查看
代码描述:
银行转账:
银行卡号:
金额:
import pymysql class TransferMoney(object): # 构造方法 def __init__(self, conn): self.conn = conn self.cur = conn.cursor() def transfer(self, source_id, target_id, money): # 1). 判断两个银行卡号是否存在? # 2). 判断source_id是否有足够的钱? # 3). source_id扣钱 # 4). target_id加钱 if not self.check_account_avaialbe(source_id): raise Exception("账户不存在") if not self.check_account_avaialbe(target_id): raise Exception("账户不存在") if self.has_enough_money(source_id, money): try: self.reduce_money(source_id, money) self.add_money(target_id, money) except Exception as e: print("转账失败:", e) self.conn.rollback() else: self.conn.commit() print("%s给%s转账%s金额成功" % (source_id, target_id, money)) def check_account_avaialbe(self, acc_id): """判断帐号是否存在, 传递的参数是银行卡号的id""" select_sqli = "select * from bankData where id=%d;" % (acc_id) print("execute sql:", select_sqli) res_count = self.cur.execute(select_sqli) if res_count == 1: return True else: # raise Exception("账户%s不存在" %(acc_id)) return False def has_enough_money(self, acc_id, money): """判断acc_id账户上金额> money""" # 查找acc_id存储金额? select_sqli = "select money from bankData where id=%d;" % (acc_id) print("execute sql:", select_sqli) self.cur.execute(select_sqli) # ((1, 500), ) # 获取查询到的金额钱数; acc_money = self.cur.fetchone()[0] # 判断 if acc_money >= money: return True else: return False def add_money(self, acc_id, money): update_sqli = "update bankData set money=money+%d where id=%d" % (money, acc_id) print("add money:", update_sqli) self.cur.execute(update_sqli) def reduce_money(self, acc_id, money): update_sqli = "update bankData set money=money-%d where id=%d" % (money, acc_id) print("reduce money:", update_sqli) self.cur.execute(update_sqli) # 析构方法 def __del__(self): self.cur.close() self.conn.close() if __name__ == '__main__': # 1. 连接数据库, conn = pymysql.connect( host='localhost', user='root', password='redhat', db='helloTest', charset='utf8', autocommit=True, # 如果插入数据,, 是否自动提交? 和conn.commit()功能一致。 ) trans = TransferMoney(conn) # assert trans.check_account_avaialbe(14255632) == False # assert trans.check_account_avaialbe(13997) == True # # # assert trans.has_enough_money(13997, 800) == False # assert trans.has_enough_money(13998, 700) == True # trans.add_money(13998, 200) # trans.reduce_money(13998, 200) # # trans.transfer(12567, 16787, 100) # trans.transfer(13997, 13998, 200)
相关文章推荐
- 基于python3.6连接mysql,实现一个银行转账的小功能(源码)
- Java基于JDBC实现事务,银行转账及货物进出库功能示例
- 基于Python实现一个简单的银行转账操作
- 用python实现银行转账功能
- 基于Python实现一个简单的银行转账操作
- Python基于有道实现英汉字典功能
- 用python操作mysql数据库(之通过类实现,方便添加功能)
- Python网络编程基于多线程实现多用户全双工聊天功能示例
- python实现基于SVM手写数字识别功能
- 基于python网络编程实现支持购物、转账、存取钱、定时计算利息的信用卡系统
- Python实现基于多线程、多用户的FTP服务器与客户端功能完整实例
- 基于python网络编程实现支持购物、转账、存取钱、定时计算利息的信用卡系统
- Python实现的拟合二元一次函数功能示例【基于scipy模块】
- Python基于list的append和pop方法实现堆栈与队列功能示例
- Python基于SMTP协议实现发送邮件功能详解
- Python学习笔记_02:使用Tkinter连接MySQL数据库实现登陆注册功能
- 基于python脚本实现软件的注册功能(机器码+注册码机制)
- 基于Python实现通过微信搜索功能查看谁把你删除了
- Python使用文件锁实现进程间同步功能【基于fcntl模块】
- 基于Python实现Windows下壁纸切换功能