作用:
- MYSQLdb是Python链接mysql的接口api
- 特点
- 与Python数据库接口2.0兼容
- 线程安全
- 线程友好(线程不能互相阻塞)
Python版本:
- Python2.3 -- Python2.7
函数定义:
- _mysql.connect() #通过unix的socket链接本机的数据库,用户名为系统用户名,没有密码,没有指定数据库
- _mysql.connect("localhost","joebob","moonpie","thangs") #参数分别为:host、username、password、database
- _mysql.connect(host="localhost",port=3307,user="joebob", passwd="moonpie",db="thangs",read_default_file="~/.my.cnf", conv=my_conv, unix_socket, compress, connect_timeout, named_pipe, init_command, use_unicode, charset, ssl, sql_mode) #命令参数都是可选;conv指示数据类型转换规则,my_conv = { FIELD_TYPE.LONG: int }
- Connection对象:
- db.query("""SELECT spam, eggs, sausage FROM breakfast WHERE price < 5""") #sql语句可以跨越多行
- db.store_result() #立即获取服务器所有查询结果返回给客户端
- db.use_result() #数据结果存储在服务器端,由客户端来逐行获取查询结果
- commit() #如果数据库支持事务,则进行事务提交;否则,不做任何事
- rollback() #如果数据库支持事务,则进行事务回滚;否则,抛出异常“NotSupportedError”
- cursor([cursorclass]) #返回游标
- Cursor对象:
- callproc(procname, args) #存储过程只在MySQL5.0以后的版本中支持
- close() #在一个已经关闭的cursor上执行其它操作,会抛出异常“ProgrammingError”
- info() #返回上一次查询的信息
- setinputsize()
- setoutputsize()
- nextset()
- fetchone()
- fetchmany(n)
- fetchall()
- execute(sql, (params))
- executemany(sql, [(params1),(params2)])
- Cursor相关类:
- BaseCursor #Cursor对象的基类
- CursorStoreResultMixIn #使用mysql_store_result()将数据全部拉回并存储在客户端
- CursorUseResultMixIn #使用mysql_use_result(),通过fetch操作逐行从服务器取回数据
- CursorTupleRowsMixIn #查询结果以数组的形式返回
- CursorDictRowsMixIn #查询结果以字典形式返回,key为字段名,value为字段值,必要时为key加上表明
- Cursor #由CursorWarningMixIn、CursorStoreResultMixIn、CursorTupleRowsMixIn、BaseCursor组成
- DictCursor
- SSCursor #“server-side”cursor,使用CursorUseResultMixIn,建议在结果集非常大的时候使用
- SSDictCursor
- result.fetch_row(maxrows = 0, how=0) #从服务器端获取结果数据,不超过maxrows指定行数,当maxrows=0时表示获取全部结果;how参数只是结果集返回的形式,how=0表示以数组形式返回,how=1表示以字典形式返回,how=2意义与how=1相同
应用实例:
- 样例:
- import MySQLdb
- db = MySQLdb.connect(passwd = "root", db = "puppy")
- c = db.cursor()
- max_price = 5
- c.execute("""SELECT spam, eggs, sausage FROM breakfast WHERE price < %s""", (max_price,))
- c.fetchone()
- c.executemany(
- """INSERT INTO breakfast (name, spam, eggs, sausage, price)
- VALUES (%s, %s, %s, %s, %s)""",
- [
- ("Spam and Sausage Lover's Plate", 5, 1, 8, 7.95 ),
- ("Not So Much Spam Plate", 3, 2, 0, 3.95 ),
- ("Don't Wany ANY SPAM! Plate", 0, 4, 3, 5.95 )
- ] )