Выборка данных из SQLite в Python

Выборка данных с использованием различных условий в SQLite в Python

Выборка данных с использованием различных условий в SQLite с помощью Python — это одна из самых распространенных операций при работе с базами данных. Для этого используется оператор SELECT с различными условиями в WHERE. Давайте рассмотрим, как это делается.

Подключение к базе данных

import sqlite3

conn = sqlite3.connect('my_database.db')
cursor = conn.cursor()

Основной выбор

Чтобы получить все столбцы из таблицы, используйте символ *:

cursor.execute("SELECT * FROM users")
rows = cursor.fetchall()
for row in rows:
    print(row)

Здесь SELECT * FROM users извлекает все столбцы из таблицы users, а fetchall() возвращает все записи в виде списка кортежей.

Выборка с условием

Для выборки данных по определенному условию используется WHERE:

cursor.execute("SELECT * FROM users WHERE age > 30")
rows = cursor.fetchall()
for row in rows:
    print(row)

Использование операторов AND и OR

cursor.execute("SELECT * FROM users WHERE age > 30 AND city = 'New York'")
rows = cursor.fetchall()
for row in rows:
    print(row)

Сортировка с помощью ORDER BY

cursor.execute("SELECT * FROM users ORDER BY age DESC")
rows = cursor.fetchall()
for row in rows:
    print(row)

Ограничение количества результатов с помощью LIMIT

cursor.execute("SELECT * FROM users LIMIT 5")
rows = cursor.fetchall()
for row in rows:
    print(row)

В этом примере из таблицы users будут извлечены только первые 5 записей.

Выборка уникальных записей с помощью DISTINCT

cursor.execute("SELECT DISTINCT city FROM users")
rows = cursor.fetchall()
for row in rows:
    print(row)

Использование подзапросов

cursor.execute("""
SELECT * FROM users 
WHERE age > (SELECT AVG(age) FROM users)
""")
rows = cursor.fetchall()
for row in rows:
    print(row)

Выполнение математических и агрегатных функций

cursor.execute("SELECT AVG(age), MAX(age), MIN(age) FROM users")
row = cursor.fetchone()
print(row)

Использование GROUP BY и HAVING

cursor.execute("""
SELECT city, COUNT(*) as count 
FROM users 
GROUP BY city 
HAVING count > 2
""")
rows = cursor.fetchall()
for row in rows:
    print(row)

Полезные моменты и методы

еще несколько полезных моментов и методов, которые пригодятся при работе с базовыми операциями выбора данных в SQLite через Python.

Псевдонимы (Aliases)

Вы можете использовать псевдонимы для имен столбцов или таблиц, чтобы сделать ваш SQL-запрос более читабельным или чтобы избежать конфликтов имен:

cursor.execute("SELECT name AS UserName, age AS UserAge FROM users")
rows = cursor.fetchall()
for row in rows:
    print(row)

Отбор с использованием BETWEEN

Если вы хотите выбрать записи на основе диапазона значений, вы можете использовать BETWEEN:

cursor.execute("SELECT * FROM users WHERE age BETWEEN 20 AND 30")
rows = cursor.fetchall()
for row in rows:
    print(row)

Отбор с использованием IN

Ключевое слово IN позволяет вам выбрать записи, основываясь на нескольких значениях:

cursor.execute("SELECT * FROM users WHERE city IN ('New York', 'Los Angeles')")
rows = cursor.fetchall()
for row in rows:
    print(row)

Отбор с использованием LIKE

Для выполнения поиска по шаблону используйте LIKE. Это может быть полезно при поиске записей с частичным совпадением:

cursor.execute("SELECT * FROM users WHERE name LIKE 'A%'")
rows = cursor.fetchall()
for row in rows:
    print(row)

В примере выше выбираются все пользователи, имена которых начинаются на букву 'A'.

Использование OFFSET

Вы можете использовать OFFSET с LIMIT, чтобы определить, с какой записи начать:

cursor.execute("SELECT * FROM users LIMIT 5 OFFSET 10")
rows = cursor.fetchall()
for row in rows:
    print(row)

Таким образом, запрос вернет записи с 11 по 15.

Заключение

Выборка данных с использованием различных условий в SQLite позволяет эффективно извлекать нужные данные из вашей базы данных. С помощью Python и модуля sqlite3 это процесс становится еще проще и гибче. Не забывайте закрывать соединение с базой данных после завершения всех операций.

Содержание: