Перейти к содержимому

Какую базу данных выбрать для python

  • автор:

Базы данных и их использование в приложениях на Python

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

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

Зачем нужны базы данных?

На высоком уровне веб-приложения хранят данные и представляют их пользователям в удобном виде. Например, Google хранит данные о дорогах и предоставляет маршруты для проезда из одного места в другое при каждом использовании вами Google Maps. Строить такие маршруты движения возможно благодаря тому, что данные хранятся в структурированном формате.

Базы данных делают структурированное хранилище надежным и быстрым. Они также дают представление о том, как данные должны сохраняться и извлекаться. В результате, создавая каждое новое приложение, вы не обдумываете заново, что делать с данными.

Для управления созданием и использованием баз данных создано много реализаций СУБД — систем управления базами данных. Примеры СУБД — PostgreSQL, MySQL, SQLite. Также существуют нереляционные базы данных — NoSQL.

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

В веб-разработке на Python чаще всего используются реляционные базы данных.

В этих базах данные хранятся в виде серии таблиц. Взаимосвязи между таблицами создаются при помощи внешних ключей. (Само определение «реляционные» происходит от англ. relations — «связи, отношения», — прим. перев.)

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

Реализации хранилищ баз данных различаются по сложности. SQLite — СУБД, встроенная в Python — создает один файл для всех данных каждой базы данных.

Другие СУБД, такие как PostgreSQL, MySQL, Oracle и Microsoft SQL Server, имеют более сложные схемы хранения. Кроме того, они предлагают дополнительные расширенные функции, полезные для хранения данных веб-приложений. Например:

  1. Репликация данных между главной базой данных и одним или несколькими подчиненными экземплярами, доступными только для чтения.
  2. Расширенные типы столбцов, которые могут эффективно хранить полуструктурированные данные, такие как JSON (JavaScript Object Notation).
  3. Сегментирование, которое позволяет горизонтально масштабировать несколько баз данных, каждая из которых служит экземпляром для чтения и записи, за счет задержки в согласованности данных.
  4. Мониторинг, статистика и другая полезная информация о выполнении для схем и таблиц базы данных.

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

Наиболее распространенные базы данных для веб-приложений на Python

PostgreSQL и MySQL – две наиболее распространенные базы данных с открытым исходным кодом для хранения данных веб-приложений на Python.

SQLite – это база данных, которая хранится в одном файле на диске. SQLite встроена в Python, но предназначена только для доступа по одному соединению за раз. Поэтому настоятельно рекомендуется не запускать производственное веб-приложение с SQLite. Эта база данных хороша для учебных проектов, когда вы только осваиваете, как всё работает.

Для продакшена же лучше использовать PostgreSQL или MySQL, или другую базу данных, в том числе нереляционную – всё зависит от специфики вашего приложения.

База данных PostgreSQL

PostgreSQL – это рекомендуемая реляционная СУБД для работы с веб-приложениями на Python. Функционал PostgreSQL, его активное развитие и улучшение, а также стабильность послужили причиной использования этой СУБД в бэкенде миллионов приложений, существующих сегодня в сети.

База данных MySQL

MySQL – еще одна практичная реализация СУБД для приложений, написанных на Python. Имеет открытый исходный код.

MySQL проще в освоении, чем PostgreSQL, но не так богата функциями.

Подключение к базе данных с помощью Python

Для работы с реляционной базой данных с использованием Python нужны библиотеки. Наиболее распространенные библиотеки для реляционных баз данных:

  • psycopg2 (исходный код) для PostgreSQL.
  • MySQLdb (исходный код) для MySQL. Обратите внимание, что разработка этого драйвера в основном заморожена. Поэтому будет целесообразно обратить внимание на альтернативные варианты, если в бэкенде вашего приложения используется MySQL.
  • cx_Oracle (исходный код) для Oracle Database.

Поддержка SQLite встроена во все версии Python 2.7+, поэтому отдельная библиотека для подключения не требуется. Просто импортируйте sqlite3 ( import sqlite3 ), и можно начинать работатьтоirметоyey.

Объектно-реляционное отображение

Объектно-реляционное отображение (англ. object-relational mapping, ORM) позволяет разработчикам получать доступ к данным из бэкенда при помощи Python-кода, а не SQL-запросов. Все структуры веб-приложений по-разному обрабатывают интеграцию ORM. По объектно-реляционному отображению есть множество ресурсов, так что вы без проблем разберетесь в этой теме.

Размещение баз данных на стороннем сервере

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

  • Amazon Relational Database Service (RDS) предоставляет предварительно настроенные экземпляры MySQL и PostgreSQL. Экземпляры можно масштабировать до больших или меньших конфигураций в зависимости от требований к хранилищу и производительности.
  • Google Cloud SQL – это сервис для работы с серверами MySQL, PostgreSQL и SQL. Позволяет управлять базами данных, делать бэкапы, репликации и вносить автоматические исправления. Cloud SQL интегрируется с Google App Engine, но также может использоваться и независимо.
  • BitCan предоставляет размещение баз данных MySQL и MongoDB с обширными услугами резервного копирования.
  • ElephantSQL – это SaaS-компания, которая размещает базы данных PostgreSQL и управляет конфигурацией сервера, резервным копированием и подключением к данным поверх экземпляров Amazon Web Services.

Полезные источники для изучения баз данных

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

Книги для изучения баз данных:

  1. «Изучаем SQL», автор — Алан Бьюли. Эта книга отлично подойдет для новичков, только начинающих знакомиться с обширным миром баз данных.
  2. «SQL», автор — Крис Фиайли. В этой книге подробно и на примерах разбирается использование языка запросов SQL для решения разных задач.
  3. «SQL. Сборник рецептов», автор — Энтони Молинаро. Данное пособие подойдет тем, кто уже имеет определенные знания об SQL и хочет развивать свои навыки.
  4. «SQL. Библия пользователя», авторы — Алекс Кригель и др., 2-е издание. Уникальность книги в том, что в ней приведены примеры реализации различных запросов на трех основных диалектах ведущих СУБД.
  5. «Семь баз данных за семь недель. Введение в современные базы данных и идеологию NoSQL», авторы — Эрик Редмонд, Джим Р. Уилсон. В данной книге рассказывается в основном о нереляционных базах данных. Вы узнаете об особенностях таких СУБД, как Redis, Neo4J, CouchDB, MongoDB, HBase, PostgreSQL и Riak.
  6. «Работа с PostgreSQL: настройка и масштабирование», автор — А. Ю. Васильев. Это справочник по настройке и масштабированию PostgreSQL и тонкостям его использования.

Видеокурсы:

Если же вы больше предпочитаете видеоуроки и курсы, то существует множество источников для любого уровня подготовки. Ниже приведены примеры таких источников. Они в основном рассчитаны для новичков:

  • Основы баз данных
  • Изучение SQL для начинающих
  • Видеокурс по базам данных от Технопарка
  • Python and MySQL: Database Manipulation with Python

Контрольный чеклист для изучения баз данных

  1. Установите PostgreSQL на свой сервер или персональный компьютер. Если вы используете Ubuntu, запустите sudo apt-get install postgresql .
  2. Убедитесь, что в зависимостях вашего приложения есть библиотека psycopg2.
  3. Настройте свое веб-приложение для подключения к экземпляру PostgreSQL.
  4. Создавайте модели в ORM с помощью встроенного ORM Django или SQLAlchemy с Flask.
  5. Создайте таблицы своей базы данных или синхронизируйте модели ORM с экземпляром PostgreSQL, если вы используете ORM.
  6. Начните создавать, читать, обновлять и удалять данные в базе данных из вашего веб-приложения.

Заключение

В этой статье мы кратко рассказали про базы данных в Python. Обсудили, какие они бывают и в чем особенности использования той или иной СУБД. Также мы дали вам подборки книг и видеоматериалов для дальнейшего изучения баз данных. Надеемся, что вам все это пригодится. Успехов в освоении баз данных и написании кода!

Выбор базы данных для новичка в Python и БД [закрыт]

Закрыт. На этот вопрос невозможно дать объективный ответ. Ответы на него в данный момент не принимаются.

Хотите улучшить этот вопрос? Переформулируйте вопрос так, чтобы на него можно было дать ответ, основанный на фактах и цитатах.

Закрыт 7 лет назад .

Слышал много про разные типы базы данных от кажется SimpleBD (в одном файле), до MySQL, Postgresql. Как они работают (в целом со стороны) я понимаю на уровне пользователя. Но вот язык общения с ними (sql запросы для меня почти темный лес). Хочется иметь несложную в настройке\администрировании БД, к которой легко писать запросы из python скрипта, получать данные, загружать данные. Все это нужно для обучения, личного\рабочего использования, не направленного на масс-use (высоко-нагруженные сайты). Вопрос: Поделитесь опытом с какой из БД и библиотекой в python проще всего взаимодействовать с данными для новичка, что бы не вылазило по 10-20 ошибок, из за сложного синтаксиса запросов в котором нужно очень долго разбираться. Правильно ли я понимаю что самая распространенная это MySQL и под нее можно найти больше примеров\видео уроков?

Отслеживать
задан 31 мар 2016 в 23:54
992 3 3 золотых знака 10 10 серебряных знаков 24 24 бронзовых знака

2 ответа 2

Сортировка: Сброс на вариант по умолчанию

Собственно всё, что нужно знать для работы с SQLite:

### SQL QUERIES ### selAll = "SELECT * FROM tasks" createCommand = """ # Создать таблицу CREATE TABLE tasks ( id INTEGER PRIMARY KEY, 'Задача' NVARCHAR(1000), 'Подзадача' NVARCHAR(1000), 'Сотрудник' NVARCHAR(50), 'Дата' DATE, 'Статус' NVARCHAR(200), 'Коммент' NVARCHAR(1000), 'Тек статус' NVARCHAR(30), 'Осталось' INTEGER );""" searchText = """ # Искать в таблице SELECT * FROM tasks WHERE Задача like "%%" OR Подзадача like "%%" OR Сотрудник like "%%";""" insertText = """ # Внести новые данные в таблицу INSERT INTO tasks (ID, 'Задача', 'Подзадача', 'Сотрудник', 'Дата', 'Статус', 'Коммент', 'Тек статус' ) VALUES (NULL, "", "", "", "", "", "", "" );""" deleteText = "DELETE FROM tasks WHERE # Удалить некоторые данные updateText = """UPDATE tasks # Отредактировать данные SET 'Задача'="", 'Подзадача'="", 'Сотрудник'="", 'Дата'="", 'Статус'="", 'Коммент'="", 'Тек статус'="" WHERE >Использование в Питоне. Создание таблицы:
connection = sqlite3.connect(dbfile) cursor = connection.cursor() try: cursor.execute(createCommand) except sqlite3.OperationalError: pass 

Вставка данных из словаря (newRecordDict) в таблицу:

insertCommand = insertText.format( tsk=newRecordDict["Задача"], stsk=newRecordDict["Подзадача"], prsn=newRecordDict["Сотрудник"], dt=newRecordDict["Дата"], stts=newRecordDict["Статус"], cmt=newRecordDict["Коммент"], crsts=newRecordDict["Тек статус"] ) cursor.execute(insertCommand) connection.commit() 

Модели

Для хранения данных в веб-приложении, как правило, применются базы данных. И фреймворк Django уже по умолчанию предоставляет удобный функционал для работы с различными системами баз данных.

Настройки подключения к базе данных

По умолчанию Django в качестве базы данных использует SQLite. Она очень проста в использовании и не требует запущенного сервера. Все файлы базы данных могут легко переноситься с одного компьютера на другой. Однако при необходимости мы можем использовать в Django большинство распространенных СУБД.

Для работы с базами данных в проекте Django в файле settings.py определен параметр DATABASES , который по умолчанию выглядит следующим образом:

DATABASES = < 'default': < 'ENGINE': 'django.db.backends.sqlite3', 'NAME': BASE_DIR / 'db.sqlite3', >>

Переменная DATABASES содержит набор конфигураций подключений к базам данных в виде словаря. Ключи в этом словаре — названия подключений. То есть мы можем определить кучу подключений. Но как минимум одно подключение должно быть определено в переменной DATABASES — подключение с именем default , которое представляет подключение по умолчанию.

Конфигурация каждого подключения может состоять из ряда параметров. По умолчанию указываются только два параметра. Параметр ENGINE указывает на используемый движок для доступа к БД. В данном случае это встроенный пакет django.db.backends.sqlite3 .

Второй параметр — NAME указывает на путь к базе данных. По умолчанию база данных называется db.sqlite3 . Для установки пути используется каталог из переменной BASE_DIR, которая задана в начале файла:

BASE_DIR = Path(__file__).resolve().parent.parent

По умолчанию BASE_DIR указывает на каталог, в котором находится папка проекта. И после первого запуска проекта в указанном каталоге по умолчанию будет создан файл db.sqlite3 , который собственно и будет использоваться в качестве базы данных.

Установка пути к базе данных в проекте Django

Поддерживаемые субд

Чтобы использовать другие системы управления базами данных, необходимо будет установить соответствующий пакет.

Какую БД выбрать

Доброго времен суток.
Я разворачиваю LAMP сервер с питоном вместо пхп
В базе данных должен быть пользователь, который отправляет на сервер данные:
1. ID устройства
2. Картинка с камеры
На сервере происходит обработка изображения, и обработка данных.
БД должна хранить данные пользователей и пару полей с результатами обработки изображений
Сервер также будет обращаться к этой БД для того чтобы отдать данные приложению.
Какая БД с несложной СУБД для этой задачи подойдет оптимально? Чтобы дружила с питоном
без больших дополнительных танцев с бубном.

94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
Ответы с готовыми решениями:

Какую среду выбрать
Добрый день. Есть задача создать программу, которая: 0. Будет иметь 2 варианта: для Windows и.

Какую платформу выбрать?
Добрый день, коллеги! Поручили задание, сделать приложение для удобного хранения файлов и данных.

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

Какую область применения выбрать?
Доброго времени суток, хочу попросить совета экспертов. Вопрос в том, что я не знаю в какую область.

Что выбрать — WPF .Net Core или WPF .Net Framework + буду работать с SQLite (также интересно какую версию БД выбрать)?
Всем привет. Ниже необязательная предыстория, высказался просто) Тут наконец вновь взялся за.

Просто Лис

Эксперт Python

5321 / 3335 / 1021
Регистрация: 17.05.2012
Сообщений: 9,768
Записей в блоге: 9

Вообще любую СУБД бери. Хоть sqlite. Для питона лучше найди ORM-библиотеку, но можно и sql-запросы писать.

Добавлено через 50 секунд
mysql, posgresql, oracle (для этой бубен нужен).

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *