📜  使用 fetchone() 和 fetchall() 从数据库中查询数据(1)

📅  最后修改于: 2023-12-03 14:49:39.335000             🧑  作者: Mango

使用 fetchone() 和 fetchall() 从数据库中查询数据

在 Python 中,我们使用 sqlite3 或其他数据库库来连接数据库,执行 SQL 命令。在从数据库中查询数据时,我们使用 fetchone()fetchall() 方法来检索数据并将结果提取为 Python 变量或元组。

fetchone()

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() 方法一次检索全部查询结果集,返回一个包含全部结果的列表,并将列表的每一项作为一个元组返回。

下面是一个使用 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 变量或元组。我们可以使用分页查询将大量数据拆分为适当的块进行处理。这些工具对于处理大数据集或显示可用性数据非常有用。