Методы fetchmany(), fetchall() и fetchone() в SQLite3

Методы fetchmany() и fetchall() в SQLite3 используются для извлечения нескольких строк результата запроса к базе данных. Вот как они работают:

  1. fetchmany(size): Этот метод извлекает заданное количество строк из результата запроса. Вы передаете размер (количество строк), которые хотите извлечь, в качестве аргумента метода. Если в результате запроса осталось меньше строк, чем указанный размер, то будут возвращены все оставшиеся строки. Метод fetchmany() возвращает список кортежей, где каждый кортеж представляет одну строку результата.

Пример использования:

import sqlite3

# Подключение к базе данных
conn = sqlite3.connect('example.db')
cursor = conn.cursor()

# Выполнение запроса
cursor.execute('SELECT * FROM users')

# Извлечение 2 строк из результата
rows = cursor.fetchmany(2)
for row in rows:
    print(row)

# Закрытие соединения
conn.close()
  1. fetchall(): Этот метод извлекает все оставшиеся строки из результата запроса и возвращает их в виде списка кортежей. Если результат запроса слишком большой, то использование fetchall() может привести к загрузке большого объема данных в память, что следует учитывать при работе с большими наборами данных.

Пример использования:

import sqlite3

# Подключение к базе данных
conn = sqlite3.connect('example.db')
cursor = conn.cursor()

# Выполнение запроса
cursor.execute('SELECT * FROM users')

# Извлечение всех строк из результата
rows = cursor.fetchall()
for row in rows:
    print(row)

# Закрытие соединения
conn.close()

Оба метода, fetchmany() и fetchall(), могут быть использованы для получения нескольких строк результата запроса в SQLite3.

А вот метод fetchone() в SQLite3 используется для извлечения следующей строки результата запроса к базе данных. После выполнения запроса и получения результата в виде курсора, метод fetchone() позволяет получить одну строку из результата. Если в результате запроса больше одной строки, то метод fetchone() вернет следующую строку при каждом вызове.

Пример использования:

import sqlite3

# Подключение к базе данных
conn = sqlite3.connect('example.db')
cursor = conn.cursor()

# Выполнение запроса
cursor.execute('SELECT * FROM users')

# Получение первой строки результата
row = cursor.fetchone()
print(row)

# Получение следующей строки
row = cursor.fetchone()
print(row)

# Закрытие соединения
conn.close()

В этом примере, после выполнения запроса SELECT * FROM users, метод fetchone() используется для получения первой и второй строки результата.

Чтобы распаковать полученный кортеж и назначить переменной row только первое значение, необходимо использовать вторую переменную с префиксом *, в таком случае остальные значения будут присвоены ей. И так, как вторую переменную мы использовать не собираемся, то и назовём её никак «_»:

row, *_ = cursor.fetchone()