
База данных является решающим компонентом разработки программного обеспечения. Наконец, нам нужно собирать данные в месте, где мы можем получить к ним цифровой доступ для чтения, записи, обновления и удаления.
В этом руководстве вы узнаете, как использовать SQLite из Python. Исследование SQLite – это отличный способ узнать, как работают базы данных и как выполнять основные операции CRUD (создание, чтение, обновление, удаление).
Многие должности разработчиков программного обеспечения предусматривают работу с базами данных, и если вы когда-нибудь задумаетесь о создании полномасштабной программы (например, программы для социальных сетей или онлайн игры), вам обязательно также понадобится база данных.
Этот учебник объясняет многие основные понятия и простые операции, чтобы вы могли лучше понять, как работать с базами данных.
Что такое SQLite?
SQLite — это встроенная библиотека механизма базы данных SQL (Structured Query Language), работающая на многих языках.
Согласно официальному веб-сайту, текст SQL компилируется в байт-код, который затем выполняется виртуальной машиной. Поэтому он очень быстр и может эффективно обрабатывать сложные запросы.
База данных SQLite хранится как файл на диске, похожий на файл CSV (значения, разделенные запятыми). Но SQLite имеет много преимуществ перед использованием CSV файла:
- Он написан с помощью C. C — это статически типизированный скомпилированный язык, который намного быстрее, чем большинство языков, включая Python.
- Он легок, поэтому работает лучше и быстрее, чем чтение из файла CSV.
- Его легко настроить
- Он может обрабатывать более сложные запросы.
- Полезнее научиться, если вам когда-нибудь придется использовать SQL или MySQL в будущем.
Как настроить SQLite
Вот пример использования SQLite из Python. Я использую онлайн-IDE Replit, но вы можете следить за любой IDE, которая вам нравится.
Сначала я создаю проект Python с помощью a main.py
файл. Я буду использовать библиотеку SQL CS50, которую вы можете установить, запустив pip3 install cs50
.
Первым шагом является создание файла database.db в корневом каталоге, что можно сделать, введя такую команду в терминале:
touch database.db
На этом этапе следует добавить следующий код в main.py:
from cs50 import SQL
db = SQL("sqlite:///database.db")
Как создать таблицу базы данных
Следующим шагом является создание таблицы в базе данных. SQL хранит данные в таблицах, похожих на таблицы в Excel или Google Sheets. Код для этого:
db.execute("CREATE TABLE IF NOT EXISTS users (name TEXT, age NUMBER, fav_food STRING)")
Чтобы разбить это, db – это база данных, в которую записываются данные. Далее выполняется команда. Если табл users
не существует, создайте таблицу с именем users с именами столбцов name
, age
и fav_food
с указанными типами данных для каждого значения.
Как записать в базу данных
Для добавления пользователя можно использовать операцию INSERT.
db.execute("INSERT INTO users (name, age, fav_food) VALUES(?, ?, ?)", "eesa", 14, "pizza")
Значение «eesa» вставляется в столбец имени, значение 14 вставляется в столбец возраста, а значение «пицца» вставляется в столбец fav_food.
Код для добавления другого пользователя (в этом случае Боба) будет следующим:
db.execute("INSERT INTO users (name, age, fav_food) VALUES(?, ?, ?)", "bob", 20, "burgers")
Как читать из базы данных
После этого мы можем попытаться прочесть всех пользователей из базы данных. Вы можете сделать это, запустив следующий код.
people = db.execute("SELECT * FROM users")
print(people) # [{'name': 'eesa', 'age': 14, 'fav_food': 'pizza'}]
Приведенный выше код достаточно прост. * в операторе SELECT выбирает все, что есть в базе данных.
Чтобы выбрать только определенные значения, можно использовать оператор DISTINCT. Например, вам нужна только любимая еда каждого пользователя. Вы можете сделать это, запустив следующий код:
people = db.execute("SELECT DISTINCT fav_food FROM users")
print(people)
Вы также можете разделять значения запятыми в запросе SELECT DISTINCT:
people = db.execute("SELECT DISTINCT age, fav_food FROM users")
print(people)
Что, если бы мы хотели просто прочесть данные для Боба и проигнорировать всех остальных? Вы можете сделать это с помощью предложения SQL WHERE:
people = db.execute("SELECT * FROM users WHERE name="bob"")
print(people)
Как насчет более сложных запросов? Вы можете сделать это посредством синтаксиса AND, OR и NOT. Вы можете разделить предложение WHERE с помощью этих ключевых слов для более сложных запросов.
people = db.execute("SELECT * FROM users WHERE name="bob" AND age=20")
print(people)
Это распечатает данные для Боба, потому что Бобу 20 лет.
Как обновить строку в базе данных
Чтобы обновить строку, можно использовать оператор UPDATE таким образом:
db.execute("UPDATE users SET fav_food='shawarma' WHERE name="eesa"")
Как удалить строку в базе данных
Для удаления строки используйте синтаксис DELETE (как вы могли догадаться). Это выглядит так:
db.execute("DELETE FROM users WHERE name="bob"") # goodbye bob
people = db.execute("SELECT * FROM users")
print(people) # [{'name': 'eesa', 'age': 14, 'fav_food': 'shawarma'}]
Чтобы удалить все строки в таблице, просто удалите предложение WHERE:
db.execute("DELETE FROM users") # :(
people = db.execute("SELECT * FROM users")
print(people) # []
Вывод
И это пока. Для получения дополнительной информации о SQLite я рекомендую просмотреть официальную документацию. Желаю вам удачи в создании удивительных вещей!
Вы можете проверить мой GitHub и Replit для просмотра моих проектов.
Если вы хотите связаться, мой адрес электронной почты eszhd1 (at) gmail.com