介绍:
mysqldb是python操作mysql数据库的一个库.mysql的几乎所有的操作都可以实现。
 
基本使用:

import MySQLdb

conn = MySQLdb.connect(host='localhost',user='weiyz',passwd='',db='test_DB',charset='utf-8')

#创建一个游标对象
cur = conn.cursor() #执行SQL语句,注意这里不返回结果,只是执行而已
cur.excute("use test_table;show tables;") #方法一:fetchall方法返回所有匹配的元组,给出一个大元组(每个元素还是一个元组)
ress = cursor.fetchall() #方法二:fetchone方法返回一条数据,并且使游标右移,若没有返回None
res = cursor.fetchone()
while res:
print res
res = cursor.fetchone() db.close()
说明
  cursor的各个方法:
  close():  游标关闭方法,游标被关闭之后就不能再移动,更不能被fetch
  fetchone/fetchall():  获得一行/所有行结果
  fetchmany([size]):  size指出了我到底要获取多少行的数据,如果能够返回的行数小于要求的 行数的话,就以少的为准。
  nextset():  放弃所有结果集中结果直接跳到下个结果集(如果有的话)。如果没有更多结果集就返回None,否则返回True,接下来的fetch操作将会从新结果集返回数据了。所谓结果集,就是比如连着执行两条SQL语句的话,如果不调用nextset,那么fetch来fetch去总是只能得到第一个语句的结果内容,调用了这个之后就可以看到下一个语句执行结果的内容了。
  rowcount:  这个属性代表了上一次execute*方法得到结果的结果行数,如果是-1则代表了上一次返回结果没有结果集且行数无法确定。
query: 中可以设置变量来动态地生成一些SQL语句,从而使操作更加灵活多变。query中的变量大多数时候用在查询操作里面,因为没有统一的格式规定,设定变量的方法有很多种形式。可以用格式化字符串,数字等等。例:"select Sno,Sname from Student where Sno=%s"
execute(query[,args]):  query是一个SQL串,args是一个序列或者映射,将依次为query中的变量赋值。关于query串中的变量设置下面会细讲。这个方法返回的值是影响的行数(比如查询 SQL就返回查询到了多少行,增删SQL就返回增删了多少行)
  executemany(query[,args]):  这个方法和execute是类似的,只不过它是重复好几次执行execute,args也是一个“相同长度序列的序列”,每一次执行都把一个序列中的项对应到query的变量中去。据说executemany在效率上比execute高出很多, 在批量插入、批量更新时可以考虑使用。注意,如果进行多次查询操作用这个方法的话只能得到最后一个参数约束到SQL中得到的结果集,所以executemany比较适合用于写而不是读操作。
 
关于execute和query的使用

SQL = """
select * from Client where level > %d and gid = %s
"""
cur.execute(SQL,(2,'')) #如果只有一个变量,args不要写类似 ('10001')这样,因为这判是<type 'str'>而不是tuple,应该写('10001',) print cur.fetchone() ##如果同样的SQL,用executemany来查询多个结果集的话
cur.executemany(SQL,(\
(2,''),\
(2,''),\
(1,''),\
)\
)
#如此就相当于依次把2,10001;2,10002和1,10003约束给SQL在执行,但是从查询数据的角度来看,只能得到10003的数据,
#因为executemany是一口气执行完的,fetch只能fetch到最后一个数字。

扩展:

对于支持事务的数据库, 在Python数据库编程中,当游标建立之时,就自动开始了一个隐形的数据库事务:
commit()方法: 游标的所有更新操作
rollback()方法: 回滚当前游标的所有操作。
例:
SQL = "DELETE FROM Client WHERE level < %d"

con = MySQLdb.connect(xxxxx)
cur = con.cursor()
try:
  cur.execute(SQL,(2,))
  con.commit()
except Exception,e:
  con.rollback()
finally:
  cur.close()
  con.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. 跟我一起学python(1)

    1.变量 定义一个变量  会有三个特征  id,type,value print(id(age),type(age),age) 命名推荐用下划线方式 (尽量用英文  不要过长  意思要明白) numb ...

  2. DNS 本质

    DNS 本质: 层级分布式数据库

  3. postgresql 自定义聚合函数

    方法1 CREATE OR REPLACE FUNCTION public.sfun_test1( results numeric[], val numeric) RETURNS numeric[] ...

  4. CCF CSP 201612-1 中间数

    题目链接:http://118.190.20.162/view.page?gpid=T52 问题描述 试题编号: 201612-1 试题名称: 中间数 时间限制: 1.0s 内存限制: 256.0MB ...

  5. C++笔记整理(参考整理自各大博客)

    为什么构造函数不能是虚函数,析构函数往往是虚函数? 静态存储区.无论在那里构建,其过程都是两步:首先,分配一块内存:其次,调用构造函数.好,问题来了,如果构造函数是虚函数,那么就需要通过vtable  ...

  6. 分享一个基于ssm框架下的webService接口开发

    首先肯定是导入相关jar包 cxf-core-3.1.9.jar cxf-rt-bindings-soap-3.1.9.jar cxf-rt-bindings-xml-3.1.9.jar cxf-rt ...

  7. jmeter java requst请求

    https://wangym.iteye.com/blog/731729 http://www.cnblogs.com/yangxia-test/p/4019541.html https://blog ...

  8. 安装mysql5.6

    1.创建一个不能登录的的用户: 2.下载一个数据库包: wget 下载网址 3.安装相关依赖包: yum -y install make gcc-c++ cmake bison-devel ncurs ...

  9. rabbitmq作为mqtt服务器实现websocket消息推送给浏览器

    rabbitmq的RabbitMQ Web MQTT插件可以用来支持将rabbitmq作为MQTT协议的服务器,而websocket支持mqtt协议通信实现消息推送.因为我们目前使用rabbitmq, ...

  10. docker和kubernetes中hostname的使用和常见问题

    hostname在docker中是使用UTS namespace进行隔离的.docker中主要有两种ns的用法, 一种是docker run --uts="" busybox.这种 ...