# -*- coding: UTF-8 -*-import mysql.connectorclassTransferMoney():

def __init__(self, db):

self.db=db

#转账流程

def transferMoney(self, id, targetId, money):try:

self.checkTargetUser(targetId) #检查被转账账号是否存在

self.checkMoney(id, money) #检查余额是否足够

self.transfer(id, targetId, money) #转账

self.db.commit() #提交修改

except Exceptionase:

self.db.rollback() #回滚事物

raise e

#检查被转账账号是否存在

def checkTargetUser(self, id):try:

cursor=self.db.cursor()

sql_query= 'select * from user where id=%s;' %id

cursor.execute(sql_query)

rs=cursor.fetchall()if len(rs) != 1:

raise Exception('转账账户不存在!')else:

print'转账账户存在!'except mysql.connector.Errorase:

raise Exception('检查被转账账户是否存在出错:' +str(e))finally:

cursor.close()

#检查转账金额

def checkMoney(self, id, money):try:

cursor=self.db.cursor()

sql_query= 'select * from user where id=%s and money > %s;' %(id,money)

cursor.execute(sql_query)

rs=cursor.fetchall()if len(rs) != 1:

raise Exception('转账账户余额不足!')else:

print'转账方金额充足!'except mysql.connector.Errorase:

raise Exception('检查金额出错::' +str(e))finally:

cursor.close()

#转账

def transfer(self, id, targetId, money):try:

cursor=self.db.cursor()

#自己先减去转账金额

sql_query= 'update user set money=money-%s where id=%s;' %(money,id)

rs=cursor.execute(sql_query)if cursor.rowcount != 1:

raise Exception('账号%s减款失败!' %id)

#目标账户加上转账金额

sql_query1= 'update user set money=money+%s where id=%s;' %(money, targetId)

cursor.execute(sql_query1)if cursor.rowcount != 1:

raise Exception('账号%s加款失败!' %targetId)

print'成功转账%s元!' %money

except mysql.connector.Errorase:

raise Exception('转账出错:' +str(e))finally:

cursor.close()if __name__ == '__main__':

db= mysql.connector.connect(host='127.0.0.1',port=3306,user='root',passwd='gou110422',database='test',charset='utf8')base =TransferMoney(db)try:

id,targetId,money= (1,2,100)base.transferMoney(id, targetId, money)

except Exceptionase:

print'异常:',efinally:

db.close()

#cursor.execute执行sql 语句

#cursor.rowcount 表中受影响数据个数 放在execute()之后

#fetchall() 获取所有数据

#fetchone() 获取一条数据

#fetchmany(3) 获取 3个数据

#db.commit() 数据表内容有更新,必须使用到该语句#cursor.close() #关闭游标

pythonmysqlconnector_python操作mysql——mysql.connector相关推荐

  1. [Python]Python操作/管理Mysql学习(一)

    先确定环境是否已支持MySQLdb模块,如果没有,请安装,如下: [root@bw-vm-soft ~]# wget http://jaist.dl.sourceforge.net/project/m ...

  2. mysql binary mode_mysql二进制文件操作语法(mysql binary log operate statements)

    在 mysql 配置文件中配置 log-bin,重启 mysql my.cnf (on Linux/unix) or my.ini (on Windows) 例子: [client] ... [mys ...

  3. windows+mysql+解压版_Windows操作系统安装MySQL解压版

    1.下载MySQL版本: MySQL Community Server 2.解压安装包 解压下载的安装包,放到电脑的安装目录下 3.配置my.ini文件 解压后,根目录下,有一个my-default. ...

  4. centos8.2安装mysql_为CentOS 8操作系统安装MySQL的方法,以安装MySQL 8为例

    在本文中,我们将向你展示如何在CentOS 8操作系统上安装MySQL 8.0,可从默认的CentOS 8存储库中安装最新版本的MySQL数据库服务器8.0版,CentOS 8还提供了MariaDB ...

  5. c mysql二进制,MySQL运用connector C/C+读取二进制字段

    MySQL使用connector C/C+读取二进制字段 MySQL使用connector C/C+读取二进制字段,两种方法: 用getString vector vec; while (pResul ...

  6. python 多人连接mysql 进行事务操作 对mysql加锁与释放锁

    python 多人连接mysql 对mysql进行事务操作 对mysql加锁与释放锁 下面这个是user1代码块 # -*- coding: utf-8 -*- # user1 import pymy ...

  7. 3.认识和操作一下mysql的基本命令

    3.认识和操作一下mysql的基本命令 登录mysql,在终端输入以下命令,进行登录 mysql -u root -pMacBook-Pro:~ yc$ mysql -u root -pEnter p ...

  8. chown –r mysql:mysql,mysql部署,操作及异常处理

    1.将mysql-5.1.50-linux-x86_64-glibc23.tar.gz移至/usr/local/目录下,并改名为mysql 增加mysql组 #groupadd mysql 建mysq ...

  9. jdbc操作演示 mysql

    jdbc操作演示 mysql 新建目录 项目中新建目录用于存放mysql的驱动jar包 把驱动拷备进来 设置目录为库目录 在目录上右击 然后选择 演示代码 import java.sql.Connec ...

  10. mysql和python先学哪个_Python数据库操作 初识mysql和mysql基本操作#学习猿地

    # 3.认识和操作一下mysql的基本命令 #### 登录mysql,在终端输入以下命令,进行登录 `mysql -u root -p` ```sql MacBook-Pro:~ yc$ mysql ...

最新文章

  1. 个人站立会议(11月24日)
  2. [转]MIPS 下非对齐访问的问题
  3. Qt——消息对话框的设计
  4. 计算机领域CCF推荐会议列表+
  5. 双线性映射:零知识证明的引擎
  6. 『搬运』分享一些国内外的专利搜索网站
  7. 词根词缀的实践应用 - 词根词缀词典墨墨详细使用
  8. 期权定价Python实现
  9. 怎么在WORD2016里给文档空白处添加下划线,干货在这里,WORD2016空白处如何添加下划线
  10. 【计算机网络】---局域网
  11. idea svn update 时不弹出选择分支的对话框,don't show this dialog in the furture解决方案
  12. vue-echarts绘制地图轮廓
  13. 详解ShellShock 漏洞复现原理,内附ShellShock的修复方法
  14. 《 观沧海》 《忆秦娥 · 娄山关 》
  15. [css] scale
  16. ZTree学习(三),ztree树扩展
  17. ESP8266 WIFI模块学习之路(2)——模块与单片机连接进行远程操作
  18. Custom Windows workflow Desiger 自定义Windows工作流设计器
  19. 计算机进入桌面黑屏怎么办,老司机教你电脑进入系统后黑屏怎么办
  20. 关于区块链共识类型:PoW, PoS, DPoS, PoST的解释

热门文章

  1. C#DateTime的用法
  2. WCF与ASMX Web服务差异比较[译]
  3. 现实世界的Windows Azure:就Metanga采访MetraTech公司CEO,Scott Swartz先生
  4. Silverlight 2 DataGrid December 2008
  5. [原创]如何在Windows XP 中利用监视计算机中的资源使用情况
  6. .net 时间操作(datetime数据类型,datetime方法)
  7. C#设计模式学习(类型对象模式)
  8. 8年软件测试工程师感悟:与薪资相匹配的永远是实力
  9. Jmeter的Throughput有误差与分布式测试时的坑
  10. 对C语言实验报告的建议,c语言实验报告.docx