下面是详细的讲解。
什么是 fetchone() 和 fetchall()
在 Python 中,cursor 对象的 fetchone() 方法和 fetchall() 方法可以用于从数据库中提取数据。其中,fetchone() 方法用于获取游标对象的下一行,而 fetchall() 方法用于获取游标对象中所有剩余的行。
调用 cursor.execute() 方法之后,游标对象指向结果集中的第一个行。fetchone() 方法从结果集中取出当前行,并将游标指向下一行。如果结果集为空,fetchone() 返回一个 Null 值。
fetchall() 方法获取结果集中剩余所有行,并返回一个包含这些行的序列。如果结果集为空,fetchall() 返回一个空序列。
如何使用 fetchone() 和 fetchall()
下面是使用 fetchone() 和 fetchall() 的基本步骤:
- 使用 cursor.execute() 方法执行 SELECT 语句,该语句会返回一个结果集。
- 使用 cursor.fetchone() 方法或 cursor.fetchall() 方法从结果集中获取数据。
示例 1:
import sqlite3
conn = sqlite3.connect('example.db')
cur = conn.cursor()
cur.execute('SELECT * FROM Person')
rows = cur.fetchall()
for row in rows:
print(row)
在上面的示例中,我们使用 fetchall() 方法获取了一个包含所有 Person 表中数据的元组的列表。然后,我们使用 for 循环来迭代每个元组,并将它们打印出来。
示例 2:
import sqlite3
conn = sqlite3.connect('example.db')
cur = conn.cursor()
cur.execute('SELECT * FROM Person')
row = cur.fetchone()
while row is not None:
print(row)
row = cur.fetchone()
在这个示例中,我们使用了 fetchone() 方法来获取结果集中的每一行数据。我们使用一个 while 循环来重复地调用 fetchone() 方法,直到结果集为空。
统计处理操作
当我们使用 fetchone() 或 fetchall() 获取结果集中的数据时,我们可以使用类似于列表推导式的方式来对数据进行统计处理:
示例 3:
import sqlite3
conn = sqlite3.connect('example.db')
cur = conn.cursor()
cur.execute('SELECT * FROM Person')
rows = cur.fetchall()
# 统计总人数
total_num = len(rows)
# 统计男女人数
male_num = len([row for row in rows if row[3] == 'male'])
female_num = len([row for row in rows if row[3] == 'female'])
print('Total number of people: {}'.format(total_num))
print('Number of males: {}'.format(male_num))
print('Number of females: {}'.format(female_num))
在这个示例中,我们使用了 len() 函数和列表推导式来统计总人数和男女人数。
以上就是关于使用 fetchone() 和 fetchall() 获取数据并进行统计处理的详细攻略。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:python之cur.fetchall与cur.fetchone提取数据并统计处理操作 - Python技术站