我们可以用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()

你也可能喜欢

发表评论