Python3连接MySQL(pymysql)模拟转账实现代码


Posted in Python onMay 24, 2016

本文实例为大家分享了Python3连接MySQL模拟转账的具体实现代码,供大家参考,具体内容如下

# coding:utf8
import sys
import pymysql
 
class TransferMoney(object):
  def __init__(self,conn):
    self.conn=conn
 
  def check_acct_available(self,acctid):
    cursor = self.conn.cursor()
    try:
      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:
      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:
      sql = "update account set money=money-%s where acctid=%s" % (money,acctid)
      cursor.execute(sql)
      print ("reduce_money:"+sql)
      if cursor.rowcount ! = 1:
        raise Exception("账号%s减款失败" % acctid)
    finally:
      cursor.close()
 
  def add_money(self,acctid,money):
    cursor = self.conn.cursor()
    try:
      sql="update account set money=money+%s where acctid=%s" % (money,acctid)
      cursor.execute(sql)
      print ("add_money:"+sql)
      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__":
  source_acctid = sys.argv[1]
  target_acctid = sys.argv[2]
  money = sys.argv[3]
 
 
  conn = pymysql.Connect(
            host = 'localhost',
            unix_socket = "..mysql/mysql.sock",
            port = 3306,
            user = 'root',
            passwd = '',
            db = 'python_db',
                    )
  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 相关文章推荐
python通过正则查找微博@(at)用户的方法
Mar 13 Python
仅用50行Python代码实现一个简单的代理服务器
Apr 08 Python
python递归查询菜单并转换成json实例
Mar 27 Python
Python实现字典去除重复的方法示例
Jul 31 Python
Python实现压缩和解压缩ZIP文件的方法分析
Sep 28 Python
windows下python虚拟环境virtualenv安装和使用详解
Jul 16 Python
python笔记_将循环内容在一行输出的方法
Aug 08 Python
.dcm格式文件软件读取及python处理详解
Jan 16 Python
使用keras实现densenet和Xception的模型融合
May 23 Python
PyCharm中配置PySide2的图文教程
Jun 18 Python
Python进度条的使用
May 17 Python
matplotlib画混淆矩阵与正确率曲线的实例代码
Jun 01 Python
用Python写一个无界面的2048小游戏
May 24 #Python
Python实现二叉树结构与进行二叉树遍历的方法详解
May 24 #Python
Python中set与frozenset方法和区别详解
May 23 #Python
python实现多线程的两种方式
May 22 #Python
python实现简单购物商城
May 21 #Python
python字符串的常用操作方法小结
May 21 #Python
python实现用户登录系统
May 21 #Python
You might like
德生PL550的电路分析
2021/03/02 无线电
建站常用13种PHP开源CMS比较
2009/08/23 PHP
PHP根据传来的16进制颜色代码自动改变背景颜色
2014/06/13 PHP
原生javascript实现的分页插件pagenav
2014/08/28 Javascript
JQuery拖动表头边框线调整表格列宽效果代码
2014/09/10 Javascript
javascript实现table选中的行以指定颜色高亮显示的方法
2015/05/13 Javascript
简介JavaScript中search()方法的使用
2015/06/06 Javascript
使用PHP+JavaScript将HTML页面转换为图片的实例分享
2016/04/18 Javascript
基于js里调用函数时,函数名带括号和不带括号的区别
2016/07/28 Javascript
js实现精确到毫秒的倒计时效果
2016/08/05 Javascript
js实现日历的简单算法
2017/01/24 Javascript
nodejs简单访问及操作mysql数据库的方法示例
2018/03/15 NodeJs
小程序实现多选框功能
2018/10/30 Javascript
JavaScript刷新页面的几种方法总结
2019/03/28 Javascript
使用异步controller与jQuery实现卷帘式分页
2019/06/18 jQuery
[56:56]VG vs LGD 2019国际邀请赛淘汰赛 胜者组 BO3 第一场 8.22
2019/09/05 DOTA
Python中turtle作图示例
2017/11/15 Python
python读写LMDB文件的方法
2018/07/02 Python
python 去除txt文本中的空格、数字、特定字母等方法
2018/07/24 Python
python实现三维拟合的方法
2018/12/29 Python
Python2与Python3的区别实例分析
2019/04/11 Python
Python3多目标赋值及共享引用注意事项
2019/05/27 Python
python输出带颜色字体实例方法
2019/09/01 Python
Python 文件数据读写的具体实现
2020/01/24 Python
意大利折扣和优惠券网站:Groupalia
2019/10/09 全球购物
介绍一下.NET构架下remoting和webservice
2014/05/08 面试题
学校安全教育制度
2014/01/31 职场文书
知识竞赛主持词
2014/03/26 职场文书
学校献爱心活动总结
2014/07/08 职场文书
2014年煤矿工人工作总结
2014/12/08 职场文书
教师听课评语大全
2014/12/31 职场文书
会计试用期自我评价
2015/03/10 职场文书
2015年小学教导处工作总结
2015/05/26 职场文书
地道战观后感300字
2015/06/04 职场文书
十二月早安励志心语大全
2019/12/03 职场文书
Linux中如何安装并部署Redis
2022/04/18 Servers