iis服务器助手广告广告
返回顶部
首页 > 资讯 > 数据库 >Python3连接MySQL(pymysql)模拟转账实现代码
  • 799
分享到

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

代码MySQLpymysql 2022-06-04 19:06:26 799人浏览 泡泡鱼
摘要

本文实例为大家分享了python3连接Mysql模拟转账的具体实现代码,供大家参考,具体内容如下 # coding:utf8 import sys import pymysql class Tran

本文实例为大家分享了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程序设计有所帮助。

您可能感兴趣的文档:

--结束END--

本文标题: Python3连接MySQL(pymysql)模拟转账实现代码

本文链接: https://www.lsjlt.com/news/14840.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Python3连接MySQL数据库的两种方式——mysql-connector与pymysql模块
    Python3连接MySQL数据库的两种方式——mysql-connector与pymysql模块 在Python中,我们可以使用多种不同的方法来操作MySQL数据库。在本文中,我们将介绍两种最常用的...
    99+
    2023-08-31
    数据库 mysql sql python
  • python3 实现mysql数据库连接池的示例代码
    dbutils封装文件传送门 DBUtils是一套Python数据库连接池包,并允许对非线程安全的数据库接口进行线程安全包装。DBUtils来自Webware for Python。...
    99+
    2024-04-02
  • JDBC连接的六步实例代码(与mysql连接)
    JDBC的六步: 1.注册驱动 2.获取数据库的连接 3.获取数据库的操作对象 4.执行sql语句 5.处理查询结果集(如果执行的语句中没有select语句这一步不用写) ...
    99+
    2024-04-02
  • C++模拟实现vector代码分析
    本篇内容主要讲解“C++模拟实现vector代码分析”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“C++模拟实现vector代码分析”吧!vector的模拟实现#include <...
    99+
    2023-07-05
  • mysql中如何实现外连接转换为内连接
    小编给大家分享一下mysql中如何实现外连接转换为内连接,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧! ...
    99+
    2024-04-02
  • C++模拟实现vector的示例代码
    目录1.前言2.vector介绍3.vector模拟实现3.1 迭代器接口3.2 vector元素操作3. 3 构造与析构1.前言 大家在学习C++的时候一定会学到STL(标准模板库...
    99+
    2024-04-02
  • workerman写mysql连接池的实例代码
    首先要了解为什么用连接池,连接池能为你解决什么问题 连接池主要的作用: 1、减少与数据服务器建立TCP连接三次握手及连接关闭四次挥手的开销,从而降低客户端和mysql服务端的负载,缩短请求响应时间 2、减少...
    99+
    2024-04-02
  • Android Studio连接MySql实现登录注册(附源代码)
    目录一、创建工程二、引入Mysql驱动包三、编写数据库和dao以及JDBC相关代码四、编写页面和Activity相关代码五、运行测试效果本文主要介绍了Android Studio连接...
    99+
    2024-04-02
  • JDBC连接MySQL并实现模糊查询
    场景: 在学习JDBC的语言中,每次都执行通用的几步:即注册驱动,获取连接,创建操作,处理结果,释放资源 过于复杂,因此不妨将上述步骤封装成工具类,只对外提供方法! 描述: 这是不使...
    99+
    2024-04-02
  • C++中priority_queue模拟实现的代码示例
    目录priority_queue概述 priority_queue定义 priority_queue特点 构造函数 修改相关函数pushpop容量相关函数sizeempty元素访问相...
    99+
    2024-04-02
  • C++string底层框架模拟实现代码
    目录一、 前言 二、 浅拷贝与深拷贝优缺点1. 浅拷贝2. 深拷贝3. 深拷贝现代版4. 写时拷贝三、 string框架搭建1. 框架定义2. 构造函数3. 析构函数4. 赋值重载5...
    99+
    2024-04-02
  • Unity连接MySQL并读取表格数据的实现代码
    表格如下: 在Unity读取并调用时的代码: 而如果想要查看该数据库中的另一个表,不是直接使用Table[1],而是需要更改SELECT * from <?...
    99+
    2024-04-02
  • Android Studio连接MySql实现登录注册的示例代码
    小编给大家分享一下Android Studio连接MySql实现登录注册的示例代码,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!具体如下:一、创建工程创建一个空白...
    99+
    2023-06-15
  • C++实现模拟shell命令行(代码解析)
    目录一、解析二、执行命令函数三、模拟shell四、完整代码四、运行结果一、解析 void parse(){ std::string line; getline(...
    99+
    2022-11-12
    C++ shell命令行 C++ 命令行
  • C语言模拟实现memmove的示例代码
    目录前言例子memmove的模拟实现具体实现步骤总结前言 上一篇我们介绍了memcpy和strcpy的区别,以及memcpy模拟实现,但这两个库函数都有一个缺点,那就是不能自己复制自...
    99+
    2022-12-29
    C语言实现memmove C语言 memmove
  • Spring实现HikariCP连接池的示例代码
    上两篇文章,我们讲到了Spring中如何配置单数据源和多数据源,配置数据源的时候,连接池有很多选择,在SpringBoot 1.0中使用的是Tomcat的DataSource,在Sp...
    99+
    2024-04-02
  • Node连接MySQL并封装其增删改查的实现代码
    目录Node连接Mysql 安装Mysql模块 连接Mysql 常用的SQL语句 Node操作Mysql 封装 结束 Node连接Mysql 说到node,可能大家会想到MOngo...
    99+
    2024-04-02
  • C语言模拟实现密码输入的示例代码
    目录引言思路分析代码实现代码分析引言 登录账号时我们要输入密码,密码输入错误时会提示密码错误。有时密码的输入次数会被限制,例如银行卡,当我们3次密码都输入错误时卡会被冻结。下面用C语...
    99+
    2024-04-02
  • Python&Matla实现模拟退火法的示例代码
    目录1Python实现1.1源码实现1.2 sko.SA实现2Matlab实现 2.1模拟退火法2.2蒙特卡诺法 1 Python实现 1.1 源码实现...
    99+
    2024-04-02
  • C语言之通讯录的模拟实现代码
    目录纲要:一.通讯录的静态版本    1.添加联系人  2.展示联系人  3.删除联系人  4.查找联系人信息  5.修改联系人信息  6.排序联系人 --- 我们使用 qsort ...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作