查询数据
使用execute()函数执行查询sql语句后,得到的只是受影响的行数,并不能真正拿到我们查询的内容。没关系,这里游标cursor中还提供了三种提取数据的方法:fetchone、fetchmany、fetchall,每个方法都会导致游标游动,所以必须注意游标的位置
cursor. fetchone()
获取游标所在处的一行数据,返回的是元组,没有则返回None,
cursor. fetchmany(size=None)
接收size条返回结果行。如果size的值大于返回的结果行的数量,则会返回cursor.arraysize条数据。返回的结果是一个元组,元组的元素也是元组,由每行数据组成;
cursor. fetchall()
接收全部的返回结果行。返回的结果是一个元组,元组的元素也是元组,由每行数据组成;
注意:
这些函数返回的结果数据均来自exceute()函数查询的结果集。如果exceute()结果集中没有数据,将会返回空元组。
Fetchone示例
import MySQLdb
import random
try:
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 MySQLdb
import random
try:
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 MySQLdb
try:
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-8
import MySQLdb
import random
try:
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 MySQLdb
import random
try:
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
原文地址:http://blog.51cto.com/13496943/2150063