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实现常见的回文字符串算法
Nov 14 Python
python中强大的format函数实例详解
Dec 05 Python
python批量下载抖音视频
Jun 17 Python
详解python实现数据归一化处理的方式:(0,1)标准化
Jul 17 Python
python2和python3实现在图片上加汉字的方法
Aug 22 Python
python 遍历pd.Series的index和value
Nov 26 Python
解决django中form表单设置action后无法回到原页面的问题
Mar 13 Python
Elasticsearch py客户端库安装及使用方法解析
Sep 14 Python
删除pycharm鼠标右键快捷键打开项目的操作
Jan 16 Python
Python 中Operator模块的使用
Jan 30 Python
Python list列表删除元素的4种方法
Nov 01 Python
Python pyecharts案例超市4年数据可视化分析
Aug 14 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安装为Apache DSO
2006/10/09 PHP
PHP获取http请求的头信息实现步骤
2012/12/16 PHP
php数组查找函数总结
2014/11/18 PHP
浅谈PHP的排列组合(如输入a,b,c 输出他们的全部组合)
2017/03/14 PHP
php生成条形码的图片的实例详解
2017/09/13 PHP
jQuery+JSON+jPlayer实现QQ空间音乐查询功能示例
2013/06/17 Javascript
jQuery中关于ScrollableGridPlugin.js(固定表头)插件的使用逐步解析
2014/07/17 Javascript
jQuery实现滑动页面固定顶部显示(可根据显示位置消失与替换)
2015/10/28 Javascript
jQuery多条件筛选如何实现
2015/11/04 Javascript
基于JavaScript获取鼠标位置的各种方法
2015/12/16 Javascript
基于JS实现移动端访问PC端页面时跳转到对应的移动端网页
2020/12/24 Javascript
jQuery插件dataTables添加序号列的方法
2016/07/06 Javascript
vue 不使用select实现下拉框功能(推荐)
2018/05/17 Javascript
浅谈vue同一页面中拥有两个表单时,的验证问题
2018/09/18 Javascript
js+canvas实现转盘效果(两个版本)
2020/09/13 Javascript
python标准算法实现数组全排列的方法
2015/03/17 Python
Python正则表达式使用经典实例
2016/06/21 Python
简单实现Python爬取网络图片
2018/04/01 Python
使用Py2Exe for Python3创建自己的exe程序示例
2018/10/31 Python
django session完成状态保持的方法
2018/11/27 Python
Python for循环搭配else常见问题解决
2020/02/11 Python
python 模拟登陆github的示例
2020/12/04 Python
彪马日本官网:PUMA日本
2019/01/31 全球购物
英国名牌服装购物网站:OD’s Designer
2019/09/02 全球购物
美国办公用品折扣网站:Shoplet.com
2019/11/24 全球购物
触发器(trigger)的功能都有哪些?写出一个触发器的例子
2012/09/17 面试题
食品营养与检测应届生求职信
2013/11/08 职场文书
经理管理专业毕业自荐书范文
2014/02/12 职场文书
公务员中国梦演讲稿
2014/08/19 职场文书
学党史心得体会
2014/09/05 职场文书
一份文言文检讨书
2014/09/13 职场文书
汶川大地震感悟
2015/08/10 职场文书
Python 使用dict实现switch的操作
2021/04/07 Python
2022年四月新番
2022/03/15 日漫
Python使用mitmproxy工具监控手机 下载手机小视频
2022/04/18 Python
解决IIS7下无法绑定https主机的问题
2022/04/29 Servers