1. 解决遗留问题:各种报错的处理。安全问题主要是sql的注入放在明天处理。新手Studying!每天十分钟记录一下学习进度

  2. 代码主要变动就是对各个业务的封装以及变量名的命名。(看不懂请参考昨天的文章,)sql注入仍然没动,放在明天解决修改。

  3. 看代码吧。

  • #--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修改版(二)相关推荐

  1. 若快打码平台python开发文档修改版

    一.打码的作用 在进行爬虫过程中,部分网站的登录验证码是比较简单的,例如四个英文数字随机组合而成的验证码,有的是全数字随机组成的验证码,有的是全中文随机组成的验证码.为了爬虫进行自动化,需要解决自动登 ...

  2. 专属微信二维码python制作_如何利用Python制作简单的公众号二维码关注图

    创意配图:微信,微信公众号,微信大V 而且最近发现了一个新的图像处理方面的库-Wand,它是 ImageMagick 库的 Python 接口.于是,我就打算用这个库来实现简单的制作一个二维码关注图, ...

  3. python给pip修改镜像-cmd命令修改版

    python给pip修改镜像-cmd命令修改版 本来是想用创建pip.ini的.但没有成功,于是通过命令来设置,成功了 1.查看pip的默认源 之后想修改回默认源要用 在命令行输入 pip help ...

  4. Python 简单入门指北(二)

    Python 简单入门指北(二) 2 函数 2.1 函数是一等公民 一等公民指的是 Python 的函数能够动态创建,能赋值给别的变量,能作为参传给函数,也能作为函数的返回值.总而言之,函数和普通变量 ...

  5. Python的简单介绍(二)

    接Python的简单介绍(一): 九.条件语句 if 判断条件: 执行语句-- else: 执行语句-- if 判断条件1: 执行语句1-- elif 判断条件2: 执行语句2-- elif 判断条件 ...

  6. (Python)从零开始,简单快速学机器仿人视觉Opencv---运用二:物体检测

    教程: 博主之前写了22节关于使用OpenCV的教程,欢迎大家阅读: (Python)从零开始,简单快速学机器仿人视觉Opencv-第一节:OpenCV的图像读取显示及保存 (Python)从零开始, ...

  7. Nancy简单实战之NancyMusicStore(二):打造首页

    原文:Nancy简单实战之NancyMusicStore(二):打造首页 前言 继上一篇搭建好项目之后,我们在这一篇中将把我们NancyMusicStore的首页打造出来. 布局 开始首页之前,我们要 ...

  8. Python 散点图线性拟合_机器学习之利用Python进行简单线性回归分析

    前言:在利用机器学习方法进行数据分析时经常要了解变量的相关性,有时还需要对变量进行回归分析.本文首先对人工智能/机器学习/深度学习.相关分析/因果分析/回归分析等易混淆的概念进行区分,最后结合案例介绍 ...

  9. Python人脸识别黑科技(二):教你使用python+Opencv完成人脸解锁

    继上一篇"Python人脸识别黑科技(一):50行代码运用Python+OpenCV实现人脸追踪+详细教程+快速入门+图像识",那么今天我们来讲关于使用python+opencv+ ...

最新文章

  1. HTML超出部分滚动效果 HTML滚动 HTML下拉 附效果图
  2. Git学习笔记一--创建版本库、添加文件、提交文件等
  3. 如何双击运行可执行的jar包-包懂
  4. ROS 学习笔记(一):工作空间+功能包创建
  5. SMTP Error: Could not connect to SMTP host.
  6. C# 获取项目程序路径的10种方法
  7. 好搜独立,三分天下成历史
  8. 推荐x61使用nhc软件控制风扇
  9. java IDEA 打包发布
  10. 丹佛大学 电子与计算机学院,丹佛大学商业智能硕士.pdf
  11. 基金:波动率、收益率、贝塔系数、最大回撤率、夏普比率
  12. Android录屏技术方案
  13. 简单理解三极管做开关管时的应用
  14. 【优秀论文解读】UV-SLAM: Unconstrained Line-based SLAM Using Vanishing Points for Structural Mapping
  15. 人脉就是钱脉,培养人脉的106个技巧
  16. iOS开发之响应式编程RAC
  17. 为什么按序发射只有RAW冲突?
  18. E+H超声波液位计FMU41-ARB2A2
  19. 杭州旅游1-2日最佳路线
  20. 利用Google Earth Engine看看美国圆形农田区与中国方形农田区

热门文章

  1. 实操教程|使用图像分割来做缺陷检测的一个例子
  2. 2020中国一流大学名单(27所)和中国大学综合实力300强出炉!
  3. AI论文代码强制开源?“我反对!”
  4. 实战:手把手教你用朴素贝叶斯对文档进行分类
  5. fastText实现文本分类
  6. python中的变量、Debug和数据类型
  7. 造成机器学习项目失败的7个原因
  8. 经典算法题之Maximal Square
  9. 如何让黑白图片恢复“生机”
  10. 使用OpenCV进行对象检测