四.mysql演示银行转账
2024-10-19 15:28:24
代码演示:
#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()
最新文章
- 魅族M8时期写过几个app,纪念一下曾经的自己
- 动态加载jQuery
- mvc action controller area
- jq 部分用法
- 【iOS】FMDB/SQLCipher数据库加解密,迁移
- SQL查看一张表中是否存在记录
- VS2010插件及快捷键设置
- Effective C++笔记05:实现
- Cookie 操作工具类
- 主引导记录MBR/硬盘分区表DPT/主分区、扩展分区和逻辑分区/电脑启动过程
- preg_*匹配的字符串长度限制问题以及nginx,php上传文件过大问题
- gcc编译器用法
- JSONObject和JSONArray区别及基本用法
- ES 6 proimse &;&;iterator &;&;Generator函数 &;&;async
- [翻译][架构设计]The Clean Architecture
- ElasticSearch入门1: mac 安装
- 启用SharePoint 2013文档版本控制
- js 实现几分钟前、几小时前、几天前,以及几分钟后、几小时后、几天前后
- HDUOJ---------Kia's Calculation
- JavaScript获取输入框内容
热门文章
- Thrall’s Dream 第四届山东省省赛 (直接暴力DFS)
- 跟着百度学PHP[17]-PHP扩展CURL的POST传输数据
- Unix系统编程()lseek系统调用
- yii2 RESTful API 405 Method Not Allowed
- expr判断整数是相加的值,返回命令的返回值$? 是0,但是少数情况是1,例如1 + -1 ,$? 的结果是1 ,判断要大于1最准确
- VMWare虚拟机 网络连接模式
- sql把varchar转化为int型
- UFLDL深度学习笔记 (二)SoftMax 回归(矩阵化推导)
- Flea Circus(Project Euler 213)
- (转)java反编译i++和++i问题