代码演示:

 #conding:utf8
import pymysql
import sys class TransferMoney(object):
def __init__(self,conn):
self.conn=conn
def check_acct_available(self,acctid):
cursor = self.conn.cursor()
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("账号%s不存在:"%acctid)
finally:
cursor.close() def has_enough_money(self,acctid,money):
cursor = self.conn.cursor()
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("账号%s没有足够的钱:" % acctid)
finally:
cursor.close()
def reduce_money(self,acctid,money):
cursor = self.conn.cursor()
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.fetchall()
if cursor.rowcount!=1:
raise Exception("账号%s减款失败:" % acctid)
finally:
cursor.close() def add_money(self,acctid,money):
cursor = self.conn.cursor()
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.fetchall()
if cursor.rowcount != 1:
raise Exception("账号%s加款失败:" % 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__":
'''付款人账号id,收款人账号id,转账金额'''
source_acctid=sys.argv[1]
target_acctid=sys.argv[2]
money=sys.argv[3]
conn=pymysql.connect(
host='192.168.199.249',
port=3306,
user='root',
passwd='',
db='imooc',
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()

最新文章

  1. 魅族M8时期写过几个app,纪念一下曾经的自己
  2. 动态加载jQuery
  3. mvc action controller area
  4. jq 部分用法
  5. 【iOS】FMDB/SQLCipher数据库加解密,迁移
  6. SQL查看一张表中是否存在记录
  7. VS2010插件及快捷键设置
  8. Effective C++笔记05:实现
  9. Cookie 操作工具类
  10. 主引导记录MBR/硬盘分区表DPT/主分区、扩展分区和逻辑分区/电脑启动过程
  11. preg_*匹配的字符串长度限制问题以及nginx,php上传文件过大问题
  12. gcc编译器用法
  13. JSONObject和JSONArray区别及基本用法
  14. ES 6 proimse &&iterator &&Generator函数 &&async
  15. [翻译][架构设计]The Clean Architecture
  16. ElasticSearch入门1: mac 安装
  17. 启用SharePoint 2013文档版本控制
  18. js 实现几分钟前、几小时前、几天前,以及几分钟后、几小时后、几天前后
  19. HDUOJ---------Kia's Calculation
  20. JavaScript获取输入框内容

热门文章

  1. Thrall’s Dream 第四届山东省省赛 (直接暴力DFS)
  2. 跟着百度学PHP[17]-PHP扩展CURL的POST传输数据
  3. Unix系统编程()lseek系统调用
  4. yii2 RESTful API 405 Method Not Allowed
  5. expr判断整数是相加的值,返回命令的返回值$? 是0,但是少数情况是1,例如1 + -1 ,$? 的结果是1 ,判断要大于1最准确
  6. VMWare虚拟机 网络连接模式
  7. sql把varchar转化为int型
  8. UFLDL深度学习笔记 (二)SoftMax 回归(矩阵化推导)
  9. Flea Circus(Project Euler 213)
  10. (转)java反编译i++和++i问题