MySQLdb
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的更多相关文章
- ubuntu 启动MySql和安装python的MySQLdb模块
ubuntu一般会自己预安装mysql,你只需 /etc/init.d/mysql start|stop|restart|reload|force-reload|status 命令便可以实现mysq ...
- Mysql5.5升级到5.7后MySQLdb不能正常使用的问题解决
ubuntu系统 报错信息1 Type "help", "copyright", "credits" or "license&qu ...
- Python3.4下安装pip和MySQLdb
想用pyhton3.4做数据分析,pip和MySQLdb是必要的,一个便于安装常用模块,一个用来操作数据库.当时安装这两个模块时,由于没有人指导,花了很多的时间才安装好. 安装pip时,按照网上的教程 ...
- Create function through MySQLdb
http://stackoverflow.com/questions/745538/create-function-through-mysqldb How can I define a multi-s ...
- python MySQLdb 对mysql基本操作方法
#!/usr/bin/env python # -*- coding:utf-8 -*- import MySQLdb conn = MySQLdb.connect(host=',db='host') ...
- Python的MySQLdb模块安装
MySQL-python-1.2.1.tar.gz 下载地址:https://pan.baidu.com/s/1kVfH84v 然后解压,打开README(这个其实没有什么鸟用) 里面有安装过程: ...
- Python中MySQLdb模块的安装
安装 MySQLdb是Python语言访问mysql数据库的一个模块,如果你不确定自己的Python环境中是否已经安装了这个模块,可以打开Python shell,输入import MySQLdb,如 ...
- [Python] MySQLdb(即 MySQL-python 包)在 OS X 中安装指南
本文参考:http://www.cnblogs.com/ifantastic/archive/2013/04/13/3017677.html 安装环境:OS X 操作系统,Python 2.7.10 ...
- MySQLdb操作mysql的blob值
一般情况下我们是把图片存储在文件系统中,而只在数据库中存储文件路径的,但是有时候也会有特殊的需求:把图片二进制存入数据库. 今天我们采用的是python+mysql的方式 MYSQL 是支持把图片存入 ...
- 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 ...
随机推荐
- 让多个Fragment 切换时不重新实例化、FragmentTabHost切换Fragment时避免UI重新加载
http://www.tuicool.com/articles/FJ7VBb FragmentTabHost切换Fragment时避免UI重新加载 不过,初次实现时发现有个缺陷,每次FragmentT ...
- 爬虫再探实战(四)———爬取动态加载页面——请求json
还是上次的那个网站,就是它.现在尝试用另一种办法——直接请求json文件,来获取要抓取的信息. 第一步,检查元素,看图如下: 过滤出JS文件,并找出包含要抓取信息的js文件,之后就是构造request ...
- UVA1476 三分法
单峰函数(即先递增后递减,有极大值的函数),都可以用三分法来求 #include <iostream> #include <cmath> #include <cstdio ...
- Java 集合深入理解(6):AbstractList
点击查看 Java 集合框架深入理解 系列, - ( ゜- ゜)つロ 乾杯~ 今天心情比天蓝,来学学 AbstractList 吧! 什么是 AbstractList AbstractList 继承自 ...
- iOS开发资源:几个类似Path 2.0侧滑菜单的效果实现
IIViewDeckController/ViewDeck 类似 Path 2.0 的视图左右滑动的效果,可向左或者向右顺滑的滑动.支持ARC和non-ARC,默认ARC. https://githu ...
- Qt Clipboard剪贴板简单使用
设置剪贴板的内容 QClipboard *clipboard = QApplication::clipboard(); clipboard->setText("contents&quo ...
- curl 发送带有Authorization的post请求命令
curl --user user:password -d "param1=111¶m2=222" "http://127.0.0.1/cmd"
- LeetCode Kth Smallest Element in a BST(数据结构)
题意: 寻找一棵BST中的第k小的数. 思路: 递归比较方便. /** * Definition for a binary tree node. * struct TreeNode { * int v ...
- QEMU Guest Agent
QEMU Guest Agent It is a daemon program running inside the domain which is supposed to help manageme ...
- Win7下安装双系统Centos,并修复Centos引导加载程序安装在U盘上的问题
1.使用U盘安装Centos时,磁盘分区划分要注意:系统(包含Win7)只能4个主分区,所以只能在删除一个主分区或者在扩展分区的空闲分区内建立目录. 2.Centos在安装步骤的最后,引导加载程序的选 ...