MySQLdb设计实战

import MySQLdb
from DBUtils.PooledDB import PooledDB
pool = PooledDB(MySQLdb,5,host='localhost',user='root',passwd='pwd',db='myDB',port=3306,blocking=True) #5为连接池里的最少连接数 conn = pool.connection() #以后每次需要数据库连接就是用connection()函数获取连接就好了
cur=conn.cursor()
SQL="select * from table1"
r=cur.execute(SQL)
r=cur.fetchall()
cur.close()
conn.close() # 创建数据库
SET NAMES utf8;
SET FOREIGN_KEY_CHECKS=0; #禁用外键约束
DROP TABLE IF EXISTS `employee_tbl`; CREATE TABLE IF NOT EXISTS `runoob_tbl`(
`runoob_id` INT UNSIGNED AUTO_INCREMENT NOT NULL,
`runoob_title` VARCHAR(100) NOT NULL UNIQUE,
`runoob_author` VARCHAR(40) NOT NULL,
`submission_date` DATETIME NOT NULL,
`sex` enum('m','w','l') DEFAULT NULL,
PRIMARY KEY ( `runoob_id` )
)ENGINE=InnoDB DEFAULT CHARSET=utf8; insert into runoob_tbl(runoob_title, runoob_author, submission_date) values("a", "b", now());
INSERT INTO runoob_tbl(runoob_title, runoob_author, submission_date) VALUES("JAVA 教程", "RUNOOB.COM", '2016-05-06');
UPDATE runoob_tbl SET runoob_title='a' WHERE runoob_id=1;
DELETE FROM runoob_tbl WHERE runoob_id=3;
SELECT * from runoob_tbl WHERE runoob_title LIKE '%a%';
SELECT country FROM Websites UNION ALL SELECT country FROM apps ORDER BY country; UNION ALL不会去重
SELECT * from runoob_tbl ORDER BY submission_date DESC; DESC升序,高的在上 AESC降序,高的在下
SELECT name FROM person_tbl WHERE name REGEXP 'ok$'; name字段中以'ok'为结尾

MySQLdb的使用

#mysql> create table `account`(
# -> `acctid` int(11) default null comment 'XXXX',
# -> `money` int(11) default null comment 'XXX'
# -> ) ENGINE = innodb default charset = utf8;
#coding:utf8
import sys
import MySQLdb class TransferMoney(object):
def __init__(self,conn):
self.conn = conn
def transfer(self,s,t,money):
try:
self.check_acct_avilable(s)
self.check_acct_avilable(t)
self.has_enough_money(s,money)
self.reduce_money(s,money)
self.add_money(t,money)
self.conn.commit()
except Exception as e:
self.conn.rollback()
raise e
def check_acct_avilable(self,acctid):
cursor = self.conn.cursor()
try:
cursor = self.conn.cursor()
sql = "select * from account where acctid=%s"%acctid
cursor.execute(sql)
print "check_acct_avilable: " + sql
rs = cursor.fetchall()
if len(rs) != 1:
raise Exception("not have this ID %s"%acctid)
finally:
cursor.close() def has_enough_money(self,acctid,money):
cursor = self.conn.cursor()
try:
cursor = self.conn.cursor()
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("accout not have enough money %s"%acctid)
finally:
cursor.close() def reduce_money(self,acctid,money):
cursor = self.conn.cursor()
try:
cursor = self.conn.cursor()
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("ID reduce money fail %s"%acctid)
finally:
cursor.close() def add_money(self,acctid,money):
cursor = self.conn.cursor()
try:
cursor = self.conn.cursor()
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("ID add money fail %s"%acctid)
finally:
cursor.close() if __name__ == "__main__":
s = sys.argv[1]
t = sys.argv[2]
money = sys.argv[3] conn = MySQLdb.Connect(host = '127.0.0.1',port = 3306,user = 'root',passwd = 'wjl123',db = 'imooc',charset = 'utf8')
t_m = TransferMoney(conn) try:
t_m.transfer(s,t,money)
except Exception as e:
print e
finally:
conn.close()

MySQLdb的更多相关文章

  1. ubuntu 启动MySql和安装python的MySQLdb模块

    ubuntu一般会自己预安装mysql,你只需 /etc/init.d/mysql start|stop|restart|reload|force-reload|status  命令便可以实现mysq ...

  2. Mysql5.5升级到5.7后MySQLdb不能正常使用的问题解决

    ubuntu系统 报错信息1 Type "help", "copyright", "credits" or "license&qu ...

  3. Python3.4下安装pip和MySQLdb

    想用pyhton3.4做数据分析,pip和MySQLdb是必要的,一个便于安装常用模块,一个用来操作数据库.当时安装这两个模块时,由于没有人指导,花了很多的时间才安装好. 安装pip时,按照网上的教程 ...

  4. Create function through MySQLdb

    http://stackoverflow.com/questions/745538/create-function-through-mysqldb How can I define a multi-s ...

  5. python MySQLdb 对mysql基本操作方法

    #!/usr/bin/env python # -*- coding:utf-8 -*- import MySQLdb conn = MySQLdb.connect(host=',db='host') ...

  6. Python的MySQLdb模块安装

    MySQL-python-1.2.1.tar.gz  下载地址:https://pan.baidu.com/s/1kVfH84v 然后解压,打开README(这个其实没有什么鸟用) 里面有安装过程: ...

  7. Python中MySQLdb模块的安装

    安装 MySQLdb是Python语言访问mysql数据库的一个模块,如果你不确定自己的Python环境中是否已经安装了这个模块,可以打开Python shell,输入import MySQLdb,如 ...

  8. [Python] MySQLdb(即 MySQL-python 包)在 OS X 中安装指南

    本文参考:http://www.cnblogs.com/ifantastic/archive/2013/04/13/3017677.html 安装环境:OS X 操作系统,Python 2.7.10 ...

  9. MySQLdb操作mysql的blob值

    一般情况下我们是把图片存储在文件系统中,而只在数据库中存储文件路径的,但是有时候也会有特殊的需求:把图片二进制存入数据库. 今天我们采用的是python+mysql的方式 MYSQL 是支持把图片存入 ...

  10. mac OS X 配置Python+Web.py+MySQLdb环境

    MAC默认支持Python 2.7所以不用安装. 1.安装pip sudo easy_install pip 2.安装Web.py sudo pip install Web.py 3.安装MySQLd ...

随机推荐

  1. Ubuntu封装制作ISO镜像

    首先下载Remastersys的Deb软件包 链接:http://pan.baidu.com/s/1i3tYPKT 密码: 使用命令强制安装 dpkg --force-all -i remasters ...

  2. BZOJ 1271 秦腾与教学评估

    二分. #include<iostream> #include<cstdio> #include<cstring> #include<algorithm> ...

  3. HDOJ-三部曲-1002-Radar Installation

    Radar Installation Time Limit : 2000/1000ms (Java/Other)   Memory Limit : 20000/10000K (Java/Other) ...

  4. 电话 SMS 邮件 网页 AppStore

    //调用safar打开网页 [[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"http://www.cnbl ...

  5. .a包生成64位

    ./configure  CC="/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain ...

  6. Selenium - IWebDriver.SwitchTo() frame 和 Window 的用法

    IWebDriver.SwitchTo().Frame(IWebElement frame) 如果一个页面是一个html元素, 只有一个head, 一个body, 那么使用IWebDriver.Fin ...

  7. CI中的事物

    $this->db->trans_begin(), 在使用时,设置了  mysql AUTOCOMMIT = 0,表示禁止自动提交, 在未提交和回滚之前,不会提交sql查询. AUTOCO ...

  8. PAT (Basic Level) Practise:1039. 到底买不买

    [题目链接] 小红想买些珠子做一串自己喜欢的珠串.卖珠子的摊主有很多串五颜六色的珠串,但是不肯把任何一串拆散了卖.于是小红要你帮忙判断一下,某串珠子里是否包含了全部自己想要的珠子?如果是,那么告诉她有 ...

  9. Core Java Volume I — 3.8. Control Flow

    3.8. Control FlowJava, like any programming language, supports both conditional statements and loops ...

  10. 四 GPU 并行编程的存储系统架构

    前言 在用 CUDA 对 GPU 进行并行编程的过程中,除了需要对线程架构要有深刻的认识外,也需要对存储系统架构有深入的了解. 这两个部分是 GPU 编程中最为基础,也是最为重要的部分,需要花时间去理 ...