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获取服务器信息的最简单实现方法
Mar 05 Python
详解 Python 读写XML文件的实例
Aug 02 Python
Django ManyToManyField 跨越中间表查询的方法
Dec 18 Python
浅谈Python接口对json串的处理方法
Dec 19 Python
Python docx库用法示例分析
Feb 16 Python
python使用Paramiko模块实现远程文件拷贝
Apr 30 Python
在python中,使用scatter绘制散点图的实例
Jul 03 Python
numpy中的meshgrid函数的使用
Jul 31 Python
pycharm 安装JPype的教程
Aug 08 Python
PyQt5 如何让界面和逻辑分离的方法
Mar 24 Python
python 如何停止一个死循环的线程
Nov 24 Python
总结python多进程multiprocessing的相关知识
Jun 29 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
php magic_quotes_gpc的一点认识与分析
2008/08/18 PHP
PHP 上传文件的方法(类)
2009/07/30 PHP
PHP采集腾讯微博的实现代码
2012/01/19 PHP
PHP实现采集抓取淘宝网单个商品信息
2015/01/08 PHP
PHP实现的oracle分页函数实例
2016/01/25 PHP
PHP面向对象程序设计类的定义与用法简单示例
2016/12/27 PHP
老生常谈PHP面向对象之命令模式(必看篇)
2017/05/24 PHP
判定是否原生方法的JS代码
2013/11/12 Javascript
浅谈JavaScript中null和undefined
2015/07/09 Javascript
JS非Alert实现网页右下角“未读信息”效果弹窗
2015/09/26 Javascript
JS函数定义方式的区别介绍
2016/03/22 Javascript
jQuery实现定位滚动条位置
2016/08/05 Javascript
模板视图和AngularJS之间冲突的解决方法
2016/11/22 Javascript
URL中“#” “?” &“”号的作用浅析
2017/02/04 Javascript
Javascript操作dom对象之select全面解析
2017/04/24 Javascript
基于vue实现swipe分页组件实例
2017/05/25 Javascript
vue3.0 CLI - 2.3 - 组件 home.vue 中学习指令和绑定
2018/09/14 Javascript
利用python实现简单的循环购物车功能示例代码
2017/07/05 Python
pip安装py_zipkin时提示的SSL问题对应
2018/12/29 Python
python验证身份证信息实例代码
2019/05/06 Python
python在新的图片窗口显示图片(图像)的方法
2019/07/11 Python
python函数的万能参数传参详解
2019/07/26 Python
django从后台返回html代码的实例
2020/03/11 Python
HTML5 背景的显示区域实现
2020/07/09 HTML / CSS
预订旅游活动、景点和旅游:GetYourGuide
2019/09/29 全球购物
英国女性化妆品收纳和家具网站:Beautify
2019/12/07 全球购物
WatchShop法国:英国排名第一的独立手表零售商
2020/02/17 全球购物
中学老师的自我评价
2013/11/07 职场文书
模具专业毕业推荐信
2014/03/08 职场文书
学校志愿者活动总结
2014/06/27 职场文书
乡镇四风对照检查材料
2014/08/31 职场文书
三严三实对照检查材料
2014/09/22 职场文书
2015年加油站工作总结
2015/05/13 职场文书
奖励申请报告范文
2015/05/15 职场文书
PHP对接阿里云虚拟号的实现(号码隐私保护)
2021/04/06 PHP
goland设置颜色和字体的操作
2021/05/05 Golang