MySQLdb操作数据库(二)

查询数据

使用execute()函数执行查询sql语句后,得到的只是受影响的行数,并不能真正拿到我们查询的内容。没关系,这里游标cursor中还提供了三种提取数据的方法:fetchone、fetchmany、fetchall,每个方法都会导致游标游动,所以必须注意游标的位置
cursor. fetchone()
获取游标所在处的一行数据,返回的是元组,没有则返回None,
cursor. fetchmany(size=None)
接收size条返回结果行。如果size的值大于返回的结果行的数量,则会返回cursor.arraysize条数据。返回的结果是一个元组,元组的元素也是元组,由每行数据组成;
cursor. fetchall()
接收全部的返回结果行。返回的结果是一个元组,元组的元素也是元组,由每行数据组成;

注意:
这些函数返回的结果数据均来自exceute()函数查询的结果集。如果exceute()结果集中没有数据,将会返回空元组。

Fetchone示例

import MySQLdbimport randomtry: conn = MySQLdb.connect( host = ‘127.0.0.1‘, user = ‘root‘, passwd = "123456", port = 3306) conn.select_db(‘python‘)# cur = conn.cursor()# 获取游标 cur.execute("select * from user") while 1: res = cur.fetchone() if res is None: #表示已经取完结果集 break print res cur.close() conn.commit() conn.close() print u"sql执行成功"except Exception, e:print e

从execute()函数的查询结果中取数据,以元组的形式返回游标所在处的一条数据,如果游标所在处没有数据,将返回空元组,该数据执行一次,游标向下移动一个位置。fetchone()函数必须跟exceute()函数结合使用,并且在exceute()函数之后使用

Fetchmany示例

import MySQLdbimport randomtry: conn = MySQLdb.connect( host = ‘127.0.0.1‘, user = ‘root‘, passwd = "123456", port = 3306) conn.select_db(‘python‘)# 选择pythonDB数据库 cur = conn.cursor()# 获取游标 cur.execute("select * from user") resTuple = cur.fetchmany(2)#2表示取两条数据 print u"结果集类型:",type(resTuple) for i in resTuple: print i cur.close() conn.commit() conn.close() print u"sql执行成功"except Exception, e:print e

从exceute()函数结果中获取游标所在处的size条数据,并以元组的形式返回,元组的每一个元素都也是一个由一行数据组成的元组,如果size大于有效的结果行数,将会返回cursor.arraysize条数据,但如果游标所在处没有数据,将返回空元组。查询几条数据,游标将会向下移动几个位置。fetmany()函数必须跟exceute()函数结合使用,并且在exceute()函数之后使用

Fetchall示例

import MySQLdbtry: conn = MySQLdb.connect( host = ‘127.0.0.1‘, user = ‘root‘, passwd = "123456", port = 3306) conn.select_db(‘python‘)# 选择pythonDB数据库 cur = conn.cursor()# 获取游标 cur.execute("select * from user limit 2") resSet = cur.fetchall() print u"共%s条数据:" %len(resSet) print resSet#元组 cur.close() conn.commit() conn.close() print u"sql执行成功"except Exception, e: print e

获取游标所在处开始及以下所有的数据,并以元组的形式返回,元组的每一个元素都也是一个由一行数据组成的元组,如果游标所在处没有数据,将返回空元组。执行完这个方法后,游标将移动到数据库表的最后

更新数据
更新单条数据

#conding=utf-8import MySQLdbimport randomtry: conn = MySQLdb.connect( host = ‘127.0.0.1‘, user = ‘root‘, passwd = "123456", port = 3306) conn.select_db(‘python‘) cur = conn.cursor()# 获取游标 #更新一条数据 update = cur.execute("update user set password = ‘huhongqiang‘ where name=‘tom0‘") print u"修改语句受影响额行数:", update#为更新成功的条数 #查询一条数据 cur.execute("select * from user where name=‘tom0‘;") print cur.fetchone() cur.close() conn.commit() conn.close() print u"sql执行成功"except MySQLdb.Error,e:print e

批量更新数据

import MySQLdbimport randomtry: conn = MySQLdb.connect( host = ‘127.0.0.1‘, user = ‘root‘, passwd = "123456", port = 3306) conn.select_db(‘python‘)# 选择pythonDB数据库 cur = conn.cursor()# 获取游标 #批量更新数据sql = "update user set password = %s where name=%s"cur.executemany(sql, [(‘345‘, ‘tom1‘), (‘123‘, ‘tom2‘)])#此处传入一个列表,列表元素是元组#查看更新后的结果 query = cur.execute("select * from user where name in (‘tom1‘,‘tom2‘)") print u"表中所有数据:" for i in cur.fetchall(): print i cur.close() conn.commit() conn.close() print u"sql执行成功"except Exception, e: print e

相关文章