Это БАЗА (данных): Как подключиться и выполнить запрос?
В этой статье расскажем, какие есть базы данных и как правильно с ними работать: подключаться и делать запросы.
39 открытий299 показов
Хотите заплатить хакерам $15 миллионов за свои данные?
Это не шутка. Именно такую сумму заплатила американская сеть казино Caesars Entertainment злоумышленникам, которые увели их БД.
База данных –– самое ценное, что есть у каждой компании. Именно в ней хранится вся чувствительная и важная для бизнеса информация. В этой статье расскажем, какие есть базы данных и как правильно с ними работать: подключаться и делать запросы.
Такие разные базы данных
Базы данных — основной инструмент программирования. БД хранят важную информацию о пользователях и позволяют этой информацией управлять.
Они делятся на два основных типа: реляционные и нереляционные.
Реляционная база — как большой шкаф с ящиками. У каждого своя подпись, и в нём лежат только определенные вещи по порядку. Например, один ящик для носков, второй для шапок, третий –– для носовых платков.
Все очень аккуратно, ничего не теряется, но если нужно что-то изменить, например, носки переложить в ящик с платками –– будет не так-то просто.
Чтобы делать запросы к реляционной базе, нужно использовать язык SQL. А обрабатывать эти запросы будет СУБД –– система управления базами данных. Простыми словами –– штука, которая помогает вам управлять самой базой. Что-то из шкафа вытащить, кого-то в него спрятать.
Нереляционная база данных — как огромная коробка, куда можно складывать всё, что угодно и как угодно. Это удобно, но для системы с чёткой структурой не подойдёт.
Какой тип БД выбрать для проекта –– зависит от целей компании, размера и особенностей бизнеса. Разберём каждый тип.
Реляционные базы данных (SQL)
Реляционные базы –– таблицы, где данные организованы в строки и столбцы. У каждой таблицы строгая схема, которая определяет типы данных и их взаимосвязь. Реляционные базы используются для приложений, где важны точность и согласованность информации.
Посмотрим на конкретные примеры.
MySQL
Очень популярная база с открытым исходным кодом. Она надежная, удобная и быстрая. MySQL часто используют для веб-приложений. Например, Airbnb, Netflix и Uber.
Её любят, потому что у неё качественная и подробная документация, а также большое сообщество.
PostgreSQL
Мощная и универсальная реляционная база данных, которая предлагает расширенные возможности. Среди них — работа с JSON, хранение массивов и поддержка пользовательских типов данных. Это делает PostgreSQL гибким инструментом для решения самых разнообразных задач.
СУБД используется в сложных приложениях, где важны высокая надежность и гибкий функционал.
SQLite
Эта однофайловая СУБД мало весит и не требует сервера для работы. Она идеально подходит для небольших приложений, мобильных устройств и тестирования.
Если нужно будет что-то куда-то переносить –– процесс пойдёт быстро. За эту простоту SQLite и любят.
Нереляционные базы
Нереляционные базы данных подходят для работы с большими объемами, которые могут быть неструктурированными или слабо структурированными.
В отличие от реляционных, у этих баз нет строгой схемы, что делает их гибкими и удобными для многих современных приложений.
Разберём самые популярные варианты нереляционных баз.
MongoDB
NoSQL-база данных, которая хранит данные в формате JSON, обеспечивает гибкость и простоту работы. MongoDB часто используется в приложениях, требующих динамической структуры данных, а также в учебных и небольших проектах благодаря своей доступности и лёгкости освоения.
Redis
Высокопроизводительная база данных, оптимизированная для минимизации задержек при доступе к данным. Идеально подходит для кэширования, управления сессиями, обработки очередей сообщений и других задач, требующих мгновенного отклика.
В чём разница между базами данных
Выбор базы данных — долгосрочное решение, от которого зависит эффективность работы вашего приложения. Давайте подробнее разберём различия между реляционными и нереляционными базами данных, чтобы помочь вам сделать осознанный и правильный выбор.
Структура данных
Масштабируемость
Скорость и производительность
Выбор зависит от потребностей проекта: для сложных транзакционных систем с жесткой структурой данных лучше использовать реляционные базы, а для гибких, масштабируемых приложений с неструктурированными данными — нереляционные.
Для работы с базами данных важно уметь выполнять ключевые операции: извлечение, добавление, обновление и удаление данных. Разберём, что такое SQL-запросы и как выполнение этих операций отличается в реляционных и нереляционных базах данных.
Подключаемся к MySQL
Для реляционных баз данных используются стандартные операции:
- SELECT — получить данные;
- INSERT — добавить новые данные;
- UPDATE — обновить существующие данные;
- DELETE — удалить данные.
Поработаем с ними на примере MySQL. Представим, что у нас есть база с пользователями нашего блога. Чтобы поработать с ней, нужно настроить соединение с программой. Разберём этот процесс шаг за шагом.
Шаг 1. Устанавливаем библиотеку
Для работы с MySQL в Python нам понадобится библиотека mysql-connector-python.
Дла этого напишем команду в терминале:
С помощью неё можно подключиться к базе, отправлять к ней запросы и обрабатывать результаты этих запросов.
Шаг 2. Настраиваем подключение
Чтобы подключиться к базе данных MySQL, необходимо знать её параметры:
- Хост: адрес сервера, где находится база данных. Это может быть localhost;
- Порт: номер порта для подключения. По умолчанию для MySQL — 3306-й порт;
- Пользователь: имя пользователя, который имеет доступ к базе;
- Пароль: пароль для этого пользователя;
- Имя базы данных: конкретная база, с которой вы хотите работать.
Как это может выглядеть:
- Хост: localhost
- Порт: 3306
- Пользователь: root
- Пароль: “”
- Имя базы данных: test_db
Шаг 3. Подключаемся к базе данных
Теперь создадим программу, которая установит соединение с MySQL.
Что тут происходит:
- Импорт нужных библиотек: mysql.connector — это основной модуль для работы с MySQL в Python. Error — класс для обработки ошибок;
- Настройка подключения: Используем метод mysql.connector.connect, в который передаются параметры: host, user, password и database. Это наши настройки для базы данных;
- Проверка подключения:Метод is_connected() из переменной connection проверяет, удалось ли установить соединение;
- Выполнение запросов:Создаём курсор для выполнения SQL-запросов с помощью connection.cursor(). После этого можно делать запросы к базе. Выбираем конкретную базу, получаем все данные, добавляем в неё сущность, а затем удаляем её. Последний запрос — получение одного конкретного юзера;
- Закрытие соединения:Закрываем соединение с помощью метода connection.close() для того, чтобы избежать утечек ресурсов и проблем с безопасностью.
Вы также можете обернуть код в try-except, чтобы отловить непредвиденные ошибки и не уронить сервер.
С помощью этого подхода можно быстро настроить подключение к MySQL и начать работу с базой данных в Python-проекте.
Подключаемся к MongoDB
Для нереляционных баз используем NoSQL-запросы. Функционал такой же: добавление, удаление, изменение и получение данных. А выглядят они по-другому. Посмотрим на примере MongoDB.
Для работы с MongoDB в Python используется библиотека pymongo. Разберём, как настроить соединение, выбрать базу данных и выполнить простой запрос.
Шаг 1. Устанавливаем библиотеку
Для начала установим библиотеку pymongo на своём компьютере. Введём команду в терминал:
Шаг 2. Настраиваем подключение
Чтобы подключиться к MongoDB, нужно знать параметры базы:
- Хост: адрес сервера;
- Порт: порт, на котором работает MongoDB. По умолчанию — 27017;
- Имя базы данных: название базы, которую вы хотите использовать;
MongoDB автоматически создаст базу данных, если она не существует.
Пример настроенной базы:
- Хост: localhost
- Порт: 27017
- Имя базы данных: test_db
Шаг 3. Подключаемся и выполняем запрос
Нам нужно подключиться к базе данных MongoDB, добавить, удалить и получить данные коллекции:
Разберём подробнее:
- Импорт библиотеки: Используем MongoClient из библиотеки pymongo, чтобы создать подключение к базе;
- Создание подключения: Используем данные хоста и порта, где запущен MongoDB;
- Выбор базы данных и коллекции: Выбираем нужную базу данных. В нашем случае –– test_db. Если базы нет, MongoDB создаст её при добавлении первого документа;
- Добавление документа: Добавляем новый документ с пользователем с помощью insert_one(). А также выводим в консоль информацию о добавленном пользователе;
- Удаление. Удаляем юзера и проверяем, получилось ли. Если нет, в консоли увидим запись, что такого юзера не существует;
- Выполнение запроса: Ищем только что добавленный документ методом find_one() и проверяем, нашли ли. Тут то же самое: если юзера нет, то в консоли мы это увидим;
- Закрытие подключения: Закрываем вызов через client.close() и оповещаем самих себя в консоли.
Вы могли заметить, что мы везде заканчиваем код закрытием соединения. Это важно по нескольким причинам:
- Подключение к базе данных –– ресурсы сервера и клиента. Если соединение не закрыть, ресурсы останутся занятыми. Значит, их нельзя будет использовать для более нужных вещей;
- Неиспользуемые открытые соединения приводят к утечкам памяти;
- Открытое соединение может стать уязвимостью для атак, несанкционированного доступа или SQL-инъекций.
В этом фрагменте кода реализовано то же самое, но с улучшениями. Мы обернули его в блок try-except, чтобы защитить сервер от ошибок и предотвратить его аварийное завершение работы.
В этой статье мы лишь поверхностно коснулись темы баз данных. Если у вас ещё нет лишних денег на выкуп своих данных, рекомендуем инвестировать время в изучение основ и тонкостей работы с БД.
Качественно спроектированная база данных не только повысит эффективность и прибыльность бизнеса, но и защитит его от серьёзных рисков. Кроме того, вы значительно прокачаете свои навыки программирования.
Удачи в разработке и безопасности ваших данных! 🚀
39 открытий299 показов