继python(银行转账)简单Model修改版(二)
解决遗留问题:各种报错的处理。安全问题主要是sql的注入放在明天处理。新手Studying!每天十分钟记录一下学习进度
代码主要变动就是对各个业务的封装以及变量名的命名。(看不懂请参考昨天的文章,)sql注入仍然没动,放在明天解决修改。
看代码吧。
#--coding=utf8--
#导模板
import sys,mysql.connector
#转账类
class TransferMoney(object):
#初始化参数
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
print ‘from:’,sql
cursor.execute(sql)
rs=cursor.fetchall()
if len(rs)!=1:
#往外抛异常
raise Exception(‘not has this id’)
finally:
cursor.close()
#检查账户是否有足够的钱
def has_enough_mony(self,acctid,money):
try:
cursor=self.conn.cursor()
sql=‘select * from account where acctid =%s and money>=%s’% (acctid,money)
print ‘enough:’,sql
cursor.execute(sql)
rs=cursor.fetchall()
if len(rs)!=1:
raise Exception(‘not has enough money’)
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)
print ‘reduce:’,sql
cursor.execute(sql)
if cursor.rowcount!=1:
raise Exception(‘resuce fail’)
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)
print ‘add:’,sql
cursor.execute(sql)
if cursor.rowcount!=1:
raise Exception(‘add fail’)
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_mony(source_acctid,money)
self.reduce_money(source_acctid,money)
self.add_money(target_acctid,money)
self.conn.commit()
print ‘success’
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=mysql.connector.connect(
user=‘root’,
password=‘123456’,
database=‘bank’,
charset=‘utf8’,
use_unicode=True
)
#实例化类
tr_money=TransferMoney(conn)
try:
#调用转账方法
tr_money.transfer(source_acctid,target_acctid,money)
except Exception as e:
print str(e)
finally:
conn.close()
你要不要也来试试,用 Python 测测你和女神的颜值差距(仅供娱乐,请勿联想) 如果真的遇到好的同事,那算你走运,加油,抓紧学到手。
python、爬虫技巧资源分享Q群:766610200
包含python, pythonweb、爬虫、数据分析等Python技巧,以及人工智能、大数据、数据挖掘、自动化办公等的学习方法。
打造从零基础到项目开发上手实战全方位解析!
点击:加入
继python(银行转账)简单Model修改版(二)相关推荐
- 若快打码平台python开发文档修改版
一.打码的作用 在进行爬虫过程中,部分网站的登录验证码是比较简单的,例如四个英文数字随机组合而成的验证码,有的是全数字随机组成的验证码,有的是全中文随机组成的验证码.为了爬虫进行自动化,需要解决自动登 ...
- 专属微信二维码python制作_如何利用Python制作简单的公众号二维码关注图
创意配图:微信,微信公众号,微信大V 而且最近发现了一个新的图像处理方面的库-Wand,它是 ImageMagick 库的 Python 接口.于是,我就打算用这个库来实现简单的制作一个二维码关注图, ...
- python给pip修改镜像-cmd命令修改版
python给pip修改镜像-cmd命令修改版 本来是想用创建pip.ini的.但没有成功,于是通过命令来设置,成功了 1.查看pip的默认源 之后想修改回默认源要用 在命令行输入 pip help ...
- Python 简单入门指北(二)
Python 简单入门指北(二) 2 函数 2.1 函数是一等公民 一等公民指的是 Python 的函数能够动态创建,能赋值给别的变量,能作为参传给函数,也能作为函数的返回值.总而言之,函数和普通变量 ...
- Python的简单介绍(二)
接Python的简单介绍(一): 九.条件语句 if 判断条件: 执行语句-- else: 执行语句-- if 判断条件1: 执行语句1-- elif 判断条件2: 执行语句2-- elif 判断条件 ...
- (Python)从零开始,简单快速学机器仿人视觉Opencv---运用二:物体检测
教程: 博主之前写了22节关于使用OpenCV的教程,欢迎大家阅读: (Python)从零开始,简单快速学机器仿人视觉Opencv-第一节:OpenCV的图像读取显示及保存 (Python)从零开始, ...
- Nancy简单实战之NancyMusicStore(二):打造首页
原文:Nancy简单实战之NancyMusicStore(二):打造首页 前言 继上一篇搭建好项目之后,我们在这一篇中将把我们NancyMusicStore的首页打造出来. 布局 开始首页之前,我们要 ...
- Python 散点图线性拟合_机器学习之利用Python进行简单线性回归分析
前言:在利用机器学习方法进行数据分析时经常要了解变量的相关性,有时还需要对变量进行回归分析.本文首先对人工智能/机器学习/深度学习.相关分析/因果分析/回归分析等易混淆的概念进行区分,最后结合案例介绍 ...
- Python人脸识别黑科技(二):教你使用python+Opencv完成人脸解锁
继上一篇"Python人脸识别黑科技(一):50行代码运用Python+OpenCV实现人脸追踪+详细教程+快速入门+图像识",那么今天我们来讲关于使用python+opencv+ ...
最新文章
- HTML超出部分滚动效果 HTML滚动 HTML下拉 附效果图
- Git学习笔记一--创建版本库、添加文件、提交文件等
- 如何双击运行可执行的jar包-包懂
- ROS 学习笔记(一):工作空间+功能包创建
- SMTP Error: Could not connect to SMTP host.
- C# 获取项目程序路径的10种方法
- 好搜独立,三分天下成历史
- 推荐x61使用nhc软件控制风扇
- java IDEA 打包发布
- 丹佛大学 电子与计算机学院,丹佛大学商业智能硕士.pdf
- 基金:波动率、收益率、贝塔系数、最大回撤率、夏普比率
- Android录屏技术方案
- 简单理解三极管做开关管时的应用
- 【优秀论文解读】UV-SLAM: Unconstrained Line-based SLAM Using Vanishing Points for Structural Mapping
- 人脉就是钱脉,培养人脉的106个技巧
- iOS开发之响应式编程RAC
- 为什么按序发射只有RAW冲突?
- E+H超声波液位计FMU41-ARB2A2
- 杭州旅游1-2日最佳路线
- 利用Google Earth Engine看看美国圆形农田区与中国方形农田区