简单的MySQL银行转账实例 你的名字 2022-06-05 10:35 288阅读 0赞 本小鱼这个星期在学习MySQL数据库,完全是从零开始,从下载MySQL安装包,到MySQL的安装,到MySQL的基础知识的学习,到搭建数据库开发环境,一直到现在实现简单的实例。是一步一个脚印。 今天就由小鱼来和大家分享一个利用python来操作MySQL数据库的银行转账实例。 开发环境要求:电脑已安装MySQL软件(小鱼安装的是mysql-installer-community-5.7.20.0版本),安装MySQL图形化管理工具(小鱼安装的是Navicat),安装Python2.7,安装python-mysqlconnector插件(小鱼使用的是pymysql),安装python代码编辑器(小鱼使用的是eclipse+pydev,你们方便的话也可以使用pycharm,看个人喜好)。 python2.7的安装网上都有,当然有问题可以问我。 [mysql官网下载链接](https://dev.mysql.com/downloads/mysql/) [Navicat安装包](http://pan.baidu.com/s/1jI3nV62) 下载python-mysql连接器插件(确定自己已安装python): 1、打开cmd 2、输入 pip install pymysql 3、等待下载就好 4、直接import pymysql看是否安装成功 接下来小鱼假设你们环境都已搭建好,MySQL的基础知识也有,没有也不用怕,小鱼在后面的博客将介绍MySQL的基础知识。现在开始银行转账实例演示。 首先分析银行转账流程: 开始事务->检查账户A和账户B是否可用—>检查账户A账户是否有足够金额,比如转出100元->账户A减去100,账户B加上100->提交事务 流程分析完毕,开始编写代码。 1、pymysql中在test数据库下创建account数据表,有账户ID和余额两字段 USE test; CREATE TABLE account ( id TINYINT(3) UNSIGNED NOT NULL PRIMARY KEY AUTO_INCREMENT, acctid VARCHAR(10) NOT NULL COMMENT '账户id', money SMALLINT(10) DEFAULT NULL COMMENT '余额', PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; 2、在表中先写入两个字段 INSERT account(acctid,money) VALUES('A','110'); INSERT account(acctid,money) VALUES('B','110'); 我们可以使用`SHOW * FROM account`查看表中内容。 3、使用代码编辑器编写转账代码 import sys import pymysql class TransferMoney(object): def __init__(self,conn): self.conn=conn def transfer(self,source_acctid,target_acctid,money) try: self.check_acct_availiable(source_acctid) self.has_enough_money(target_acctid) 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='localhost',port=3306,user='root',passwd='123456',db='test',charset='utf8') tr_money=TransferMoney(conn) try: tr_money.transfer(source_acctid,target_acctid,money) except Exception as e: print "出现问题: "+str(e) finally: conn.close 到这里,框架已经搭建好了,现在只要将定义的函数编写就可以了。 小鱼这里只实现检测用户是否可用的函数,剩下的三个函数和这个函数差不多,大家可用自己尝试编一下,如果不会,或者有问题,可以和我一起讨论。 def check_acct_available(self,acctid): cursor=self.conn.cursor() try: sql="select * from account where acctid=%s" %acctid cuesor.execute(sql) print "check_acct_available: "+sql rs=curson.fetchall() if len(rs)!=1: raise Exception("账号%s不存在" %acctid) finally: cursor.close 好啦,今天小鱼就分享到这啦,自己尝试编写一下后面的三个函数哦,有问题再讨论。
还没有评论,来说两句吧...