看完视频,自己练习一遍. 还是遇到问题,不过最终还是解决了.贴上完成的代码.

CREATE TABLE `NewTable` (
`acctid` int(11) NOT NULL AUTO_INCREMENT COMMENT '账户ID' ,
`money` int(11) NULL DEFAULT NULL COMMENT '余额' ,
PRIMARY KEY (`acctid`)
)
ENGINE=InnoDB
DEFAULT CHARACTER SET=utf8 COLLATE=utf8_general_ci
AUTO_INCREMENT=1
ROW_FORMAT=COMPACT
;

  

# -*- coding:utf-8 -*-
'''
Created on 2015年10月6日 @author: WXG
'''
import MySQLdb class TranslateAccount(object):
def __init__(self, conn):
self.conn = conn def checkAccount(self, acctid):
cursor = self.conn.cursor()
try:
sql = "select * from account where acctid = %s" % acctid
print "sql for checkAccount:" + sql
cursor.execute(sql)
rs = cursor.fetchall()
if len(rs) < 1 :
raise Exception("不存在此账号%s" % acctid)
finally:
cursor.close() def checkEnoughMoney(self, acctid, money):
cursor = self.conn.cursor()
try:
sql = "select * from account where acctid = %s and money > %s" % (acctid, money)
print "sql for checkEnoughMoney:" + sql
cursor.execute(sql)
rs = cursor.fetchall()
if len(rs) < 1 :
raise Exception("此账号%s没有足够的余额" % acctid)
finally:
cursor.close() def reduceMoney(self, acctid, money):
cursor = self.conn.cursor()
try:
sql = "update account set money = money-%s where acctid = %s" % (money,acctid)
print "sql for reduceMoney:" + sql
cursor.execute(sql)
if cursor.rowcount != 1 :
raise Exception("此账号%s减款失败!" % acctid)
finally:
cursor.close() def addMoney(self, acctid, money):
cursor = self.conn.cursor()
try:
sql = "update account set money = money+%s where acctid = %s" % (money,acctid)
print "sql for addMoney:" + sql
cursor.execute(sql)
if cursor.rowcount != 1 :
raise Exception("此账号%s加款失败!" % acctid)
finally:
cursor.close() def translate(self, source_acctid, target_acctid, money):
try:
self.checkAccount(source_acctid)
self.checkAccount(target_acctid)
self.checkEnoughMoney(source_acctid, money)
self.reduceMoney(source_acctid, money)
self.addMoney(target_acctid, money)
self.conn.commit()
except Exception as e:
self.conn.rollback()
print "遇到异常%s,执行回滚!" % e if __name__ == "__main__":
source_acctid = raw_input("Source Account ID:")
target_acctid = raw_input("Target Account ID:")
money = raw_input("Translate Money:")
conn = MySQLdb.connect(host='127.0.0.1', port=3306, user='root', passwd='root', db='blog', charset='utf8')
try:
transAccount = TranslateAccount(conn)
transAccount.translate(source_acctid, target_acctid, money)
finally:
conn.close()

  

python-MySQLdb-练习的更多相关文章

  1. Python MySQLdb在Linux下的快速安装

    在家里windows环境下搞了一次 见   python MySQLdb在windows环境下的快速安装.问题解决方式 http://blog.csdn.NET/wklken/article/deta ...

  2. #MySQL for Python(MySQLdb) Note

    #MySQL for Python(MySQLdb) Note #切记不要在python中创建表,只做增删改查即可. #步骤:(0)引用库 -->(1)创建连接 -->(2)创建游标 -- ...

  3. cygwin 下安装python MySQLdb

    cygwin 下安装python MySQLdb 1) cygwin 更新 运行 cygwin/setup-x86_64.exe a 输入mysql,选择下面的包安装: libmysqlclient- ...

  4. Python MySQLdb模块连接操作mysql数据库实例_python

    mysql是一个优秀的开源数据库,它现在的应用非常的广泛,因此很有必要简单的介绍一下用python操作mysql数据库的方法.python操作数据库需要安装一个第三方的模块,在http://mysql ...

  5. python MySQLdb在windows环境下的快速安装

    python MySQLdb在windows环境下的快速安装.问题解决方式 使用python访问mysql,需要一系列安装 linux下MySQLdb安装见 Python MySQLdb在Linux下 ...

  6. windows 环境下安装python MySQLdb

    使用Python访问MySQL,需要一系列安装 Linux下MySQLdb安装见 Python MySQLdb在Linux下的快速安装 http://blog.csdn.NET/wklken/arti ...

  7. python MySQLdb连接mysql失败(转载)

    最近了解了一下django,数据库选用了mysql, 在连接数据库的过程中,遇到一点小问题,在这里记录一下,希望能够对遇到同样的问题的朋友有所帮助,少走一些弯路.关于django,想在这里也额外说一句 ...

  8. 117、python MySQLdb在windows环境下的快速安装、问题解决方式

    使用Python访问MySQL,需要一系列安装 Linux下MySQLdb安装见 Python MySQLdb在Linux下的快速安装 http://blog.csdn.NET/wklken/arti ...

  9. python MySQLdb Windows下安装教程及问题解决方法(python2.7)

    使用python访问mysql,需要一系列安装 linux下MySQLdb安装见  Python MySQLdb在Linux下的快速安装http://www.jb51.net/article/6574 ...

  10. macOS安装Python MySQLdb

    macOS安装Python MySQLdb 0. 参考 Mac OS X - EnvironmentError: mysql_config not found 1. 背景 import MySQLdb ...

随机推荐

  1. 我的iOS开发之路

    我终于开始写我的第一个cocos2d-iphone程序了.纪念一下 额,这是一个悲伤的故事.其实我从开始准备开发iOS已经好久了,从我装上Xcode开始到现在,应该已经有差不多一年的时间了把. 还记得 ...

  2. vm虚拟机上安装apache+php+ftp+mysql

    我在vm虚拟机上想安装 winxp和linux,然后在linux机上装apache+php+ftp+mysql,以下为我的按装过程:  1:连通虚拟机:两个虚拟机都选Host-Onl,查看主机Virt ...

  3. Delphi- 连接MySQL数据库BDE

    Delphi使用ADO可以连接MSSQL和ACCESS,但似乎不能连接MYSQL和ORACEL,如果要连接MYSQL和ORACLE得使用BDE. 一.连接方法 首先得先安装mysql驱动程序_mysq ...

  4. Oracle--SQL Developer创建连接及使用

    安装好Oracle之后,有几种方式可以来管理Oracle中的数据库,首先就是登陆网页版的界面:https://localhost:1158/em,这种方式管理的东西太多,使用起来有点不方便,第二种方式 ...

  5. An existing PostgreSql installation has been found... 的解决

    PostgreSql卸载之后,重新安装时跳出如下信息: Anexisting PostgreSql installation has been found atC:\ProgramFiles\Post ...

  6. jekyll bootstrap更改主题theme

    使用主题 介绍: 由于JB版本号0.2.X的主题,如今全然是模块化的.他们跟踪和单独版本号的主题包. 这让每一个人都能够自由公布和共享主题. Jekyll-Bootstrap v 0.2.x仅仅附带t ...

  7. ListBox基础

    关键点   在列表框生成后需要向其中加入或是删除行,可以利用: int AddString( LPCTSTR lpszItem )添加行, int DeleteString( UINT nIndex ...

  8. dubbox开发rest+json指南【转】

    http://dangdangdotcom.github.io/dubbox/rest.html 目录 概述 REST的优点 应用场景 快速入门 标准Java REST API:JAX-RS简介 RE ...

  9. Effective C# Chapter1-Language Elements

    <EffectiveC#>这本书讲了一些关于C#语言的使用技巧和经验. 该系列文章是备忘录和自己的一些见解.程序猿们最喜欢这类问题了,欢迎讨论~ 菜单 Item 1 使用属性取代公共成员变 ...

  10. 使用TabLayout快速实现一个导航栏

    在没有Material Design的年代,要实现一个类似微信主页面的效果,我们有以下几种解决方案: 1.Fragment + ViewPager  +  RadioGroup自定义固定导航条 2.F ...