我们可以用fetchone来获取一行数据,也可以用fetchall来获取多条数据
在查询数据时,我们可以把指针设置为DictCursor,那么返回的就是一个字典,方便处理。
注意的是,fetchone和fetchall都是返回当前指针位置以后的数据,也就是说,不会返回指针位置之前的数据。
我们可以通过scroll方法来移动指针。
scroll方法有两个模式:absolute和relative
显然absolute模式就是以绝对位置来移动指针,0是第一条数据的位置。
relative模式就是以相对位置来移动指针,正数向后移动,负数向前移动。
看看下面这段代码,当第一次输出完所有的数据之后,再次执行fetchall,输出的是空列表,只有当指针的位置移动到0之后,才会输出完整的列表。
#查询数据
import pprint
import pymysql
host = 'localhost'
username = 'test'
password = 'test'
db_name = 'test'
connect = pymysql.connect(host, username, password, db_name, charset='utf8')
#获取游标对象查询返回字典
cursor = connect.cursor(pymysql.cursors.DictCursor)
cursor.execute('select * from users;')
#只返回一个
for i in range(5):
result = cursor.fetchone()
print('fetchone')
pprint.pprint(result)
#全部返回
result = cursor.fetchall()
print('fetchall')
pprint.pprint(result)
result = cursor.fetchall()
print('fetchall')
pprint.pprint(result)
cursor.scroll(0, mode='absolute')
result = cursor.fetchall()
print('fetchall')
pprint.pprint(result)
cursor.close()
connect.close()