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中类的定义、继承及使用对象实例详解
Apr 30 Python
python中sys.argv参数用法实例分析
May 20 Python
python字典键值对的添加和遍历方法
Sep 11 Python
python django 实现验证码的功能实例代码
May 18 Python
浅析Python中的赋值和深浅拷贝
Aug 15 Python
对变量赋值的理解--Pyton中让两个值互换的实现方法
Nov 29 Python
Python3学习urllib的使用方法示例
Nov 29 Python
在pycharm上mongodb配置及可视化设置方法
Nov 30 Python
python使用插值法画出平滑曲线
Dec 15 Python
python threading和multiprocessing模块基本用法实例分析
Jul 25 Python
python KNN算法实现鸢尾花数据集分类
Oct 24 Python
基于tensorflow指定GPU运行及GPU资源分配的几种方式小结
Feb 03 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
提问的智慧(2)
2006/10/09 PHP
变量在 PHP7 内部的实现(一)
2015/12/21 PHP
详解Window7 下开发php扩展
2015/12/31 PHP
PHP基于phpqrcode类生成二维码的方法详解
2018/03/14 PHP
php微信支付之公众号支付功能
2018/05/30 PHP
php实现商城购物车的思路和源码分析
2020/07/23 PHP
收集的网上用的ajax之chat.js文件
2007/04/08 Javascript
JavaScript中获取元素索引的函数
2010/09/10 Javascript
jQuery EasyUI API 中文文档 - ComboTree组合树
2011/10/11 Javascript
在js文件中写el表达式取不到值的原因及解决方法
2013/12/23 Javascript
JQuery遍历json数组的3种方法
2014/11/08 Javascript
JavaScript中DOM详解
2015/04/13 Javascript
jQuery实现的向下图文信息滚动效果
2015/05/03 Javascript
深入理解JavaScript的React框架的原理
2015/07/02 Javascript
javascript编写贪吃蛇游戏
2015/07/07 Javascript
用JS中split方法实现彩色文字背景效果实例
2016/08/24 Javascript
每个程序员都需要学习 JavaScript 的7个理由小结
2016/09/03 Javascript
Javascript6中字符串的四个新用法分享
2016/09/11 Javascript
利用Mongoose让JSON数据直接插入或更新到MongoDB
2017/05/03 Javascript
php register_shutdown_function函数详解
2017/07/23 Javascript
使用Vue动态生成form表单的实例代码
2018/04/26 Javascript
Vue+Jwt+SpringBoot+Ldap完成登录认证的示例代码
2018/05/21 Javascript
JS插入排序简单理解与实现方法分析
2019/11/25 Javascript
javascript中闭包closure的深入讲解
2021/03/03 Javascript
python使用pil库实现图片合成实例代码
2018/01/20 Python
python3+PyQt5实现支持多线程的页面索引器应用程序
2018/04/20 Python
PyQT实现菜单中的复制,全选和清空的功能的方法
2019/06/17 Python
python中时间、日期、时间戳的转换的实现方法
2019/07/06 Python
pytorch下大型数据集(大型图片)的导入方式
2020/01/08 Python
几款Python编译器比较与推荐(小结)
2020/10/15 Python
Python实现京东抢秒杀功能
2021/01/25 Python
英国的知名精品百货公司:House of Fraser(福来德)
2016/08/14 全球购物
Paper Cape官网:美国婴儿和儿童服装品牌
2019/11/02 全球购物
银行实习自我鉴定
2013/10/12 职场文书
就业协议书
2014/09/12 职场文书
MySql子查询IN的执行和优化的实现
2021/08/02 MySQL