Главная Веб-разработка Это БАЗА (данных): Как подключиться и выполнить запрос?

Это БАЗА (данных): Как подключиться и выполнить запрос?

от admin

В этой статье расскажем, какие есть базы данных и как правильно с ними работать: подключаться и делать запросы.

021 открытий170 показов

Хотите заплатить хакерам $15 миллионов за свои данные?

Это не шутка. Именно такую сумму заплатила американская сеть казино Caesars Entertainment злоумышленникам, которые увели их БД.

База данных –– самое ценное, что есть у каждой компании. Именно в ней хранится вся чувствительная и важная для бизнеса информация. В этой статье расскажем, какие есть базы данных и как правильно с ними работать: подключаться и делать запросы.

Такие разные базы данных

Базы данных — основной инструмент программирования. БД хранят важную информацию о пользователях и позволяют этой информацией управлять.

Они делятся на два основных типа: реляционные и нереляционные.

Реляционная база — как большой шкаф с ящиками. У каждого своя подпись, и в нём лежат только определенные вещи по порядку. Например, один ящик для носков, второй для шапок, третий –– для носовых платков.

Microsoft выпустила Office 2024 — без подписки, за фиксированную суммуtproger.ru

Все очень аккуратно, ничего не теряется, но если нужно что-то изменить, например, носки переложить в ящик с платками –– будет не так-то просто.

Чтобы делать запросы к реляционной базе, нужно использовать язык SQL. А обрабатывать эти запросы будет СУБД –– система управления базами данных. Простыми словами –– штука, которая помогает вам управлять самой базой. Что-то из шкафа вытащить, кого-то в него спрятать.

Нереляционная база данных — как огромная коробка, куда можно складывать всё, что угодно и как угодно. Это удобно, но для системы с чёткой структурой не подойдёт.

Какой тип БД выбрать для проекта –– зависит от целей компании, размера и особенностей бизнеса. Разберём каждый тип.

Реляционные базы данных (SQL)

Реляционные базы –– таблицы, где данные организованы в строки и столбцы. У каждой таблицы строгая схема, которая определяет типы данных и их взаимосвязь. Реляционные базы используются для приложений, где важны точность и согласованность информации.

Посмотрим на конкретные примеры.

MySQL

Очень популярная база с открытым исходным кодом. Она надежная, удобная и быстрая. MySQL часто используют для веб-приложений. Например, Airbnb, Netflix и Uber.

Её любят, потому что у неё качественная и подробная документация, а также большое сообщество.

PostgreSQL

Мощная и универсальная реляционная база данных, которая предлагает расширенные возможности. Среди них — работа с JSON, хранение массивов и поддержка пользовательских типов данных. Это делает PostgreSQL гибким инструментом для решения самых разнообразных задач.

СУБД используется в сложных приложениях, где важны высокая надежность и гибкий функционал.

SQLite

Эта однофайловая СУБД мало весит и не требует сервера для работы. Она идеально подходит для небольших приложений, мобильных устройств и тестирования.

Предпочитаю чистый код. Топ сервисов для оценки и улучшения качества кодаtproger.ru

Если нужно будет что-то куда-то переносить –– процесс пойдёт быстро. За эту простоту SQLite и любят.

Нереляционные базы

Нереляционные базы данных подходят для работы с большими объемами, которые могут быть неструктурированными или слабо структурированными.

В отличие от реляционных, у этих баз нет строгой схемы, что делает их гибкими и удобными для многих современных приложений.

Разберём самые популярные варианты нереляционных баз.

MongoDB

NoSQL-база данных, которая хранит данные в формате JSON, обеспечивает гибкость и простоту работы. MongoDB часто используется в приложениях, требующих динамической структуры данных, а также в учебных и небольших проектах благодаря своей доступности и лёгкости освоения.

Redis

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

В чём разница между базами данных

Выбор базы данных — долгосрочное решение, от которого зависит эффективность работы вашего приложения. Давайте подробнее разберём различия между реляционными и нереляционными базами данных, чтобы помочь вам сделать осознанный и правильный выбор.

Структура данных

Это БАЗА (данных): Как подключиться и выполнить запрос?

Масштабируемость

Это БАЗА (данных): Как подключиться и выполнить запрос?

Скорость и производительность

Это БАЗА (данных): Как подключиться и выполнить запрос?

Выбор зависит от потребностей проекта: для сложных транзакционных систем с жесткой структурой данных лучше использовать реляционные базы, а для гибких, масштабируемых приложений с неструктурированными данными — нереляционные.

Для работы с базами данных важно уметь выполнять ключевые операции: извлечение, добавление, обновление и удаление данных. Разберём, что такое SQL-запросы и как выполнение этих операций отличается в реляционных и нереляционных базах данных.

Подключаемся к MySQL

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

  • SELECT — получить данные;
  • INSERT — добавить новые данные;
  • UPDATE — обновить существующие данные;
  • DELETE — удалить данные.

Поработаем с ними на примере MySQL. Представим, что у нас есть база с пользователями нашего блога. Чтобы поработать с ней, нужно настроить соединение с программой. Разберём этот процесс шаг за шагом.

Шаг 1. Устанавливаем библиотеку

Для работы с MySQL в Python нам понадобится библиотека mysql-connector-python.

Дла этого напишем команду в терминале:

			pip install mysql-connector-python 		

С помощью неё можно подключиться к базе, отправлять к ней запросы и обрабатывать результаты этих запросов.

Шаг 2. Настраиваем подключение

Чтобы подключиться к базе данных MySQL, необходимо знать её параметры:

  • Хост: адрес сервера, где находится база данных. Это может быть localhost;
  • Порт: номер порта для подключения. По умолчанию для MySQL — 3306-й порт;
  • Пользователь: имя пользователя, который имеет доступ к базе;
  • Пароль: пароль для этого пользователя;
  • Имя базы данных: конкретная база, с которой вы хотите работать.
Читать также:
PL/SQL Developer: что это за IDE и как её установить

Как это может выглядеть:

  • Хост: localhost
  • Порт: 3306
  • Пользователь: root
  • Пароль: “”
  • Имя базы данных: test_db

Шаг 3. Подключаемся к базе данных

Теперь создадим программу, которая установит соединение с MySQL.

			import mysql.connector     # Подключаем к базе данных connection = mysql.connector.connect(        host="localhost",        user="root",        password="",        database="test_db"    )  if connection.is_connected():        print("Успешно подключено к базе данных") cursor = connection.cursor()     # Выполним этот запрос и получим всех данных из таблицы users fetch_all_query = "SELECT * FROM users" cursor.execute(fetch_all_query) result_all = cursor.fetchall() print("Все данные:") for row in result_all:        print(row)     # добавляем нового юзера insert_query = "INSERT INTO users (name, email) VALUES (%s, %s)" data_to_insert = ("John Doe", "john@gmail.com") cursor.execute(insert_query, data_to_insert) connection.commit() print("Добавлено")     # Удаляем этого же юзера delete_query = "DELETE FROM users WHERE name = %s" data_to_delete = ("John Doe",) cursor.execute(delete_query, data_to_delete) connection.commit() print("Удалено")     # Пытаемся получить одного пользователя select_query = "SELECT * FROM users WHERE name = %s" data_to_select = ("John Doe",) cursor.execute(select_query, data_to_select) result = cursor.fetchone() print(f"Результат - {result}")  connection.close() print("Соединение закрыто") 		

Что тут происходит:

  1. Импорт нужных библиотек: mysql.connector — это основной модуль для работы с MySQL в Python. Error — класс для обработки ошибок;
  2. Настройка подключения: Используем метод mysql.connector.connect, в который передаются параметры: host, user, password и database. Это наши настройки для базы данных;
  3. Проверка подключения:Метод is_connected() из переменной connection проверяет, удалось ли установить соединение;
  4. Выполнение запросов:Создаём курсор для выполнения SQL-запросов с помощью connection.cursor(). После этого можно делать запросы к базе. Выбираем конкретную базу, получаем все данные, добавляем в неё сущность, а затем удаляем её. Последний запрос — получение одного конкретного юзера;
  5. Закрытие соединения:Закрываем соединение с помощью метода connection.close() для того, чтобы избежать утечек ресурсов и проблем с безопасностью. 

Вы также можете обернуть код в try-except, чтобы отловить непредвиденные ошибки и не уронить сервер.

С помощью этого подхода можно быстро настроить подключение к MySQL и начать работу с базой данных в Python-проекте.

Подключаемся к MongoDB

Для нереляционных баз используем NoSQL-запросы. Функционал такой же: добавление, удаление, изменение и получение данных. А выглядят они по-другому. Посмотрим на примере MongoDB.

Для работы с MongoDB в Python используется библиотека pymongo. Разберём, как настроить соединение, выбрать базу данных и выполнить простой запрос.

Шаг 1. Устанавливаем библиотеку

Для начала установим библиотеку pymongo на своём компьютере. Введём команду в терминал:

			pip install pymongo 		

Шаг 2. Настраиваем подключение

Чтобы подключиться к MongoDB, нужно знать параметры базы:

  • Хост: адрес сервера;
  • Порт: порт, на котором работает MongoDB. По умолчанию — 27017;
  • Имя базы данных: название базы, которую вы хотите использовать;

MongoDB автоматически создаст базу данных, если она не существует.

Пример настроенной базы:

  • Хост: localhost
  • Порт: 27017
  • Имя базы данных: test_db

Шаг 3. Подключаемся и выполняем запрос

Нам нужно подключиться к базе данных MongoDB, добавить, удалить и получить данные коллекции:

			from pymongo import MongoClient       # Создаем подключение к базе client = MongoClient(host='localhost', port=27017) print("Подключение к MongoDB успешно выполнено!")     # Выбираем базу данных db = client['test_db']     # Выбираем коллекцию с юзерами collection = db['users']     # Добавление документа в коллекцию user_data = {        "name": "John Doe",        "email": "johndoe@gmail.com"    }  # Делаем этот запрос, чтобы выполнить добавление нового юзера result = collection.insert_one(user_data) print(f"Добавлен пользователь с ID: {result.inserted_id}")   # Удаляем юзера delete_result = collection.delete_one({"name": "John Doe"})  if delete_result.deleted_count > 0:        print("Пользователь удалён.") else:        print("Пользователь не найден для удаления.")     # Получаем одного юзера user = collection.find_one({"name": "John Doe"}) if delete_result.deleted_count > 0:        print(f"Найден пользователь: {user}") else:        print("Пользователь не найден для получения.")    # Закрытие подключения client.close() print("Подключение к MongoDB закрыто.") 		

Разберём подробнее:

  1. Импорт библиотеки: Используем MongoClient из библиотеки pymongo, чтобы создать подключение к базе;
  2. Создание подключения: Используем данные хоста и порта, где запущен MongoDB;
  3. Выбор базы данных и коллекции: Выбираем нужную базу данных. В нашем случае –– test_db. Если базы нет, MongoDB создаст её при добавлении первого документа;
  4. Добавление документа: Добавляем новый документ с пользователем с помощью insert_one(). А также выводим в консоль информацию о добавленном пользователе;
  5. Удаление. Удаляем юзера и проверяем, получилось ли. Если нет, в консоли увидим запись, что такого юзера не существует;
  6. Выполнение запроса: Ищем только что добавленный документ методом find_one() и проверяем, нашли ли. Тут то же самое: если юзера нет, то в консоли мы это увидим;
  7. Закрытие подключения: Закрываем вызов через client.close() и оповещаем самих себя в консоли. 

Вы могли заметить, что мы везде заканчиваем код закрытием соединения. Это важно по нескольким причинам:

  1. Подключение к базе данных –– ресурсы сервера и клиента. Если соединение не закрыть, ресурсы останутся занятыми. Значит, их нельзя будет использовать для более нужных вещей;
  2. Неиспользуемые открытые соединения приводят к утечкам памяти;
  3. Открытое соединение может стать уязвимостью для атак, несанкционированного доступа или SQL-инъекций.

В этом фрагменте кода реализовано то же самое, но с улучшениями. Мы обернули его в блок try-except, чтобы защитить сервер от ошибок и предотвратить его аварийное завершение работы.

В этой статье мы лишь поверхностно коснулись темы баз данных. Если у вас ещё нет лишних денег на выкуп своих данных, рекомендуем инвестировать время в изучение основ и тонкостей работы с БД.

Качественно спроектированная база данных не только повысит эффективность и прибыльность бизнеса, но и защитит его от серьёзных рисков. Кроме того, вы значительно прокачаете свои навыки программирования.

Удачи в разработке и безопасности ваших данных! 🚀

Похожие статьи