Выборка данных с использованием различных условий в 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)
cursor.execute("SELECT * FROM users WHERE age > 30 AND city = 'New York'")
rows = cursor.fetchall()
for row in rows:
print(row)
cursor.execute("SELECT * FROM users ORDER BY age DESC")
rows = cursor.fetchall()
for row in rows:
print(row)
cursor.execute("SELECT * FROM users LIMIT 5")
rows = cursor.fetchall()
for row in rows:
print(row)
В этом примере из таблицы users будут извлечены только первые 5 записей.
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)
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.
Вы можете использовать псевдонимы для имен столбцов или таблиц, чтобы сделать ваш SQL-запрос более читабельным или чтобы избежать конфликтов имен:
cursor.execute("SELECT name AS UserName, age AS UserAge FROM users")
rows = cursor.fetchall()
for row in rows:
print(row)
Если вы хотите выбрать записи на основе диапазона значений, вы можете использовать BETWEEN
:
cursor.execute("SELECT * FROM users WHERE age BETWEEN 20 AND 30")
rows = cursor.fetchall()
for row in rows:
print(row)
Ключевое слово IN
позволяет вам выбрать записи, основываясь на нескольких значениях:
cursor.execute("SELECT * FROM users WHERE city IN ('New York', 'Los Angeles')")
rows = cursor.fetchall()
for row in rows:
print(row)
Для выполнения поиска по шаблону используйте LIKE
. Это может быть полезно при поиске записей с частичным совпадением:
cursor.execute("SELECT * FROM users WHERE name LIKE 'A%'")
rows = cursor.fetchall()
for row in rows:
print(row)
В примере выше выбираются все пользователи, имена которых начинаются на букву 'A'.
Вы можете использовать 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 это процесс становится еще проще и гибче. Не забывайте закрывать соединение с базой данных после завершения всех операций.
Содержание: