MySQLdb

show create table users查看

INNODB

MyISAM 不支持事务 错误时无法回滚

# Python DB API

# 数据库连接对象 connection
# cursor 使用该连接创建并返回游标
# commit 提交当前事务
# rollback 回滚当前事务
# close 关闭连接

# 数据库交互对象 cursor
# 游标对象 用于执行查询和获取结果
# execute(op[,args]) 执行一个数据库查询和命令
# fetchone() 获取结果集的下一行
# fetchmany(size) 获取结果集的下几行
# fetchall() 获取结果集中剩下的所有行
# rowcount 最近一次execute返回数据的行数或影响行数
# close() 关闭游标对象

# 安装
# Python-MySQL connector
# sourceforge.net/projects/mysql-python

# 事务
# 关闭自动commit conn.autocommit(False)
# 否则每条sql作为事务单独提交
# conn.commit()
# conn.rollback()

import MySQLdb

conn = MySQLdb.Connect(
    host = ‘127.0.0.1‘,
    post = 3306,
    user = ‘root‘,
    passwd = ‘123456‘,
    db = ‘imooc‘,
    charset = ‘utf8‘
    )

def check_acct_available(acctid):
    cursor = conn.cursor()
    try:
        sql = ‘select * from account where acctid=%s‘ % acctid
        cursor.execute(sql)
        cursor.rowcount
        #cursor.fetchall()
        #cursor.fetchmany(3)
        rs = cursor.fetchone()
        if len(rs) != 1:
            raise Exception("账号%s不存在" % acctid)
    finally:
        cursor.close()

def has_enough_money(acctid, money):
    cursor = conn.cursor()
    try:
        sql = ‘select * from account where acctid=%s and money>%s‘ % (acctid, money)
        cursor.execute(sql)
        rs = cursor.fetchone()
        if len(rs) != 1:
            raise Exception("账号%s没有足够的钱" % acctid)
    finally:
        cursor.close()

def reduce_money(acctid, money):
    cursor = conn.cursor()
    try:
        sql = ‘update account set money=money-%s where acctid=%s‘ % (money, acctid)
        cursor.execute(sql)
        if cursor.rowcount != 1:
            raise Exception("账号%s减款失败" % acctid)
    finally:
        cursor.close()

def add_money(acctid, money):
    cursor = conn.cursor()
    try:
        sql = ‘update account set money=money+%s where acctid=%s‘ % (money, acctid)
        cursor.execute(sql)
        if cursor.rowcount != 1:
            raise Exception("账号%s加款失败" % acctid)
    finally:
        cursor.close()

try:
    check_acct_available(1)
    has_enough_money(1, 100)
    reduce_money(1, 100)
    add_money(2, 100)

    conn.commit()
except Exception as e:
    conn.rollback()
finally:
    conn.close()
时间: 2024-12-15 18:51:46

MySQLdb的相关文章

Python2 - MySQL适配器 MySQLdb

本文实例讲述了python中MySQLdb模块用法.分享给大家供大家参考.具体用法分析如下: MySQLdb其实有点像php或asp中连接数据库的一个模式了,只是MySQLdb是针对mysql连接了接口,我们可以在python中连接MySQLdb来实现数据的各种操作. python连接mysql的方案有oursql.PyMySQL. myconnpy.MySQL Connector 等,不过本篇要说的确是另外一个类库MySQLdb,MySQLdb 是用于Python链接Mysql数据库的接口,它

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

使用Python访问MySQL,需要一系列安装 Linux下MySQLdb安装见 Python MySQLdb在Linux下的快速安装 http://blog.csdn.net/wklken/article/details/7271019 ------------------------------------------------------------- 以下是windows环境下的: 1.      安装数据库mysql 下载地址:http://www.mysql.com/downloa

python的MYSQLdb模块在linux环境下的安装

开始学习python数据库编程后,在了解了基本概念,打算上手试验一下时,卡在了MYSQLdb包的安装上,折腾了半天才解决.记录一下我在linux中安装此包遇到的问题.系统是ubuntn15.04. 1.下载 第一个问题是pycharm软件的模块安装功能Project Interpreter无法自动下载安装MYSQLdb包,显示 Error occurred when installling package 那没办法了,只好手动下载了.MYSQLdb包linux系统的下载的地址是 http://s

python安装mysqldb模块

今天在阿里云一台新的服务器部署程序后台,发现上面的python缺少MySQLDB 模块,记录安装过程. 首先django程序,运行 python manage.py sycdb 报错: ImproperlyConfigured: Error loading MySQLdb module: No module named MySQLdb MySQLdb模块的包名字叫mysql-python,于是pip安装之,(关于pip,可以参考这篇文章) 运行: pip install mysql-python

【mysql】MySQLdb中的事务处理

MySQL数据库有一个自动提交事务的概念,autocommit.含义是,如果开启autocommit, 则每一个语句执行后会自动提交.即一个语句视为一个事务. 在python使用的MySQLdb中,默认是不开启autocommit的.所以,只有在显示commit后,数据库操作才会真正提交.或者在rollback()后,回滚到上一次commit的状态. 例: #!/bin/env python #coding=utf-8 import MySQLdb class MYSQL(object): de

python MySQLdb 对mysql基本操作方法

1 #!/usr/bin/env python 2 # -*- coding:utf-8 -*- 3 import MySQLdb 4 5 conn = MySQLdb.connect(host='192.168.1.101',user='root',passwd='123',db='host') 6 cur = conn.cursor(cursorclass=MySQLdb.cursors.DictCursor) 7 reCout = cur.execute('select ip,name f

Python MySQLdb

数据库连接 创建数据库表 数据库插入操作 数据库查询操作 数据库更新操作 数据库连接 连接数据库前,请先确认以下事项: 您已经创建了数据库 TESTDB. 在TESTDB数据库中您已经创建了表 EMPLOYEE EMPLOYEE表字段为 FIRST_NAME, LAST_NAME, AGE, SEX 和 INCOME. 连接数据库TESTDB使用的用户名为 "testuser" ,密码为 "test123",你可以可以自己设定或者直接使用root用户名及其密码,My

MySQLdb的安装与使用

一.安装 安装已编译版本号(此方法简便快捷): http://www.codegood.com/downloads 依据自己系统下载,双击安装,搞定 然后import MySQLdb.查看是否成功 我的,win7,32位,2.7版本号 MySQL-python-1.2.3.win-amd32-py2.7.exe 二.使用 #!/usr/bin/python # encoding: utf-8 import time,MySQLdb # 打开数据库连接 db = MySQLdb.connect("

Python的MySQLdb模块安装

在配置Django时,选择的是mysql数据库,要安装MySQLdb模块,不过安装过程中,遇到了很多errors,记录一下. 系统:ubuntu 11.10 mysql:直接apt-get安装的,version:5.1.62 到官方下载MySQL for Python 然后解压,打开README: 里面有安装过程: $ tar xfz MySQL-python-1.2.1.tar.gz $ cd MySQL-python-1.2.1 $ # edit site.cfg if necessary

Mysqldb连接Mysql数据库(转)

python操作mysql数据库 Python 标准数据库接口为 Python DB-API,Python DB-API为开发人员提供了数据库应用编程接口. Python 数据库接口支持非常多的数据库,你可以选择适合你项目的数据库: GadFly mSQL MySQL PostgreSQL Microsoft SQL Server 2000 Informix Interbase Oracle Sybase 你可以访问Python数据库接口及API查看详细的支持数据库列表. 不同的数据库你需要下载