📅  最后修改于: 2023-12-03 14:49:39.335000             🧑  作者: Mango
在 Python 中,我们使用 sqlite3 或其他数据库库来连接数据库,执行 SQL 命令。在从数据库中查询数据时,我们使用 fetchone()
或 fetchall()
方法来检索数据并将结果提取为 Python 变量或元组。
fetchone()
方法检索查询结果集的下一个行。我们可以使用它来逐行访问结果,也可以在结果的末尾使用它来返回 None
。
下面是一个使用 fetchone()
方法查询 SQLite3 数据库的例子:
import sqlite3
# 连接到数据库
conn = sqlite3.connect('mydatabase.db')
# 创建一个游标 cursor
cursor = conn.cursor()
# 查询数据
cursor.execute("SELECT * FROM customers")
# 检索一行记录
row = cursor.fetchone()
# 打印每个字段
while row is not None:
print(row[0], row[1], row[2])
row = cursor.fetchone()
# 关闭连接
conn.close()
在这个例子中,我们连接到名为 mydatabase.db
的 SQLite3 数据库,创建游标对象,执行查询命令,并使用 fetchone()
方法检索一行记录。在 while 循环中,我们打印每个字段并使用 fetchone()
方法检索下一行。最后,我们关闭连接。
fetchall()
方法一次检索全部查询结果集,返回一个包含全部结果的列表,并将列表的每一项作为一个元组返回。
下面是一个使用 fetchall()
方法查询 SQLite3 数据库的例子:
import sqlite3
# 连接到数据库
conn = sqlite3.connect('mydatabase.db')
# 创建一个游标 cursor
cursor = conn.cursor()
# 查询数据
cursor.execute("SELECT * FROM customers")
# 打印所有记录
rows = cursor.fetchall()
for row in rows:
print(row[0], row[1], row[2])
# 关闭连接
conn.close()
在这个例子中,我们连接到名为 mydatabase.db
的 SQLite3 数据库,创建游标对象,执行查询命令,并使用 fetchall()
方法检索全部结果集。我们迭代结果集并打印每个字段的值。最后,我们关闭连接。
当数据查询的数量非常大时,我们可以使用分页查询将结果拆分为更小的块。在 Python 中,我们可以通过修改查询语句中的 LIMIT 和 OFFSET 参数来实现分页查询。LIMIT 参数定义搜索的匹配数量,而 OFFSET 指示从结果集的何处开始。
下面是一个使用分页查询的 SQLite3 数据库的例子:
import sqlite3
# 连接到数据库
conn = sqlite3.connect('mydatabase.db')
# 创建一个游标 cursor
cursor = conn.cursor()
# 分页查询数据
page_size = 20
offset = 0
while True:
cursor.execute(f"SELECT * FROM customers LIMIT {page_size} OFFSET {offset}")
rows = cursor.fetchall()
if not rows:
break
for row in rows:
print(row[0], row[1], row[2])
offset += page_size
# 关闭连接
conn.close()
在这个例子中,我们连接到名为 mydatabase.db
的 SQLite3 数据库,创建游标对象,并使用 while 循环分页查询数据。每一页包含 20 行,从偏移量为 0 开始。我们迭代每页,打印每行的每个字段。如果没有更多结果,我们退出循环。最后,我们关闭连接。
fetchone()
和 fetchall()
方法可以从数据库结果集中检索数据,并将其提取为 Python 变量或元组。我们可以使用分页查询将大量数据拆分为适当的块进行处理。这些工具对于处理大数据集或显示可用性数据非常有用。