Вы прочитали 3 из 3 бесплатных методичек сегодня
Безлимит →
Экстракт 04 мая 2018

Создание надежной архитектуры базы данных на Flask и SQLAlchemy

Corey Schafer · Corey Schafer Верифицирован 29:58

Развертывание ORM SQLAlchemy для управления данными в веб-приложении на Flask. Практикум для Python-разработчиков среднего уровня за 30 минут.

8 тезисов 3 задания 4 цитаты ⏱ 3 мин чтения 🎯 4 навыков
YouTube Транскрипт Сохранить
Поделиться: TG WA VK X

Для AI-агентов и LLM

Экстракт доступен в структурированном Markdown. Скачать .md · JSON API · Site index

💡 Ключевые тезисы (8)

1 Установите Flask-SQLAlchemy #
Используйте пакет `flask-sqlalchemy` вместо стандартного `sqlalchemy`. Это расширение предоставляет удобные настройки по умолчанию, специфичные для Flask, упрощая интеграцию базы данных в ваш проект.
2 Сконфигурируйте URI базы данных #
Укажите путь к SQLite базе данных в конфигурации приложения. Использование относительного пути с тремя слэшами создает файл базы данных непосредственно в директории проекта, что идеально для этапа разработки.
3 Создайте структуру данных через модели #
Определите таблицы базы данных как Python-классы, наследуемые от `db.Model`. Каждое поле в классе превращается в колонку таблицы, что позволяет взаимодействовать с SQL через интуитивный объектно-ориентированный интерфейс.
4 Реализуйте отношения «один-ко-многим» #
Свяжите таблицы `User` и `Post` с помощью `db.relationship` и внешнего ключа. Это позволяет легко получать доступ ко всем постам пользователя через атрибут объекта, не прибегая к сложным SQL-запросам вручную.
5 Используйте UTC для временных меток #
Всегда применяйте `datetime.utcnow` (без вызова функции) в качестве значения по умолчанию для временных колонок. Это обеспечивает согласованность данных независимо от часового пояса сервера.
6 Создайте таблицы командой `create_all` #
Инициируйте создание физических таблиц в базе данных с помощью метода `db.create_all()` в интерактивной оболочке Python. Это переносит вашу объектную схему в реальный файл базы данных.
7 Выполняйте операции CRUD через сессии #
Добавляйте записи в базу данных с помощью `db.session.add()` и фиксируйте изменения командой `db.session.commit()`. Такой подход гарантирует атомарность и целостность транзакций.
8 Оптимизируйте выборку данных методами запросов #
Используйте методы `.query.all()`, `.query.first()` или `.filter_by()` для извлечения данных. Это превращает записи базы данных обратно в Python-объекты, готовые к дальнейшему использованию в коде.

Создание надежной архитектуры базы данных на Flask и SQLAlchemy

Практические задания

Настройка окружения и модели базы данных

⏱ 20 мин | 🎯 Цель: Подключить SQLAlchemy и создать схему данных. | Шаги: 1. Установите flask-sqlalchemy через pip. 2. Добавьте конфигурацию SQLALCHEMY_DATABASE_URI в файл проекта. 3. Опишите классы User и Post с нужными типами данных. | ✅ Результат: Файл flask_blog.py с настроенными моделями.

Создание и наполнение базы данных

⏱ 15 мин | 🎯 Цель: Инициализировать БД и внести тестовые данные. | Шаги: 1. Запустите консоль Python. 2. Импортируйте экземпляр db. 3. Выполните db.create_all(). 4. Создайте двух пользователей и три поста, сохранив их через commit. | ✅ Результат: Файл site.db в директории проекта.

Тестирование связей и фильтрации

⏱ 10 мин | 🎯 Цель: Освоить синтаксис запросов. | Шаги: 1. Сделайте запрос User.query.filter_by(...). 2. Получите посты конкретного пользователя через атрибут user.posts. 3. Проверьте работу обратной ссылки post.author. | ✅ Результат: Консольные логи с выведенными данными пользователей и их постов.

🔒

Бесплатный лимит исчерпан

Вы прочитали 3 методичек сегодня. Завтра лимит обновится, или подпишитесь для неограниченного доступа.

🏋️ Практикум

0 / 3 выполнено

Настройка окружения и модели базы данных

⏱ 20 мин 🎯 Цель: Подключить SQLAlchemy и создать схему данных. Шаги: 1. Установите flask-sqlalchemy через pip. 2. Добавьте конфигурацию `SQLALCHEMY_DATABASE_URI` в файл проекта. 3. Опишите классы User и Post с нужными типами данных. ✅ Результат: Файл `flask_blog.py` с настроенными моделями.

Создание и наполнение базы данных

⏱ 15 мин 🎯 Цель: Инициализировать БД и внести тестовые данные. Шаги: 1. Запустите консоль Python. 2. Импортируйте экземпляр `db`. 3. Выполните `db.create_all()`. 4. Создайте двух пользователей и три поста, сохранив их через `commit`. ✅ Результат: Файл `site.db` в директории проекта.

Тестирование связей и фильтрации

⏱ 10 мин 🎯 Цель: Освоить синтаксис запросов. Шаги: 1. Сделайте запрос `User.query.filter_by(...)`. 2. Получите посты конкретного пользователя через атрибут `user.posts`. 3. Проверьте работу обратной ссылки `post.author`. ✅ Результат: Консольные логи с выведенными данными пользователей и их постов.
🎉
Все задания выполнены!
Отлично — знания превращены в навыки

💬 Цитаты (4)

«ORM позволяет нам взаимодействовать с базой данных в объектно-ориентированном стиле. Самое удобное, что можно сменить тип базы данных, не меняя основной код приложения.» #

Объяснение преимущества использования SQLAlchemy в проектах.

«Мы используем три слэша для указания относительного пути в SQLite. Это означает, что файл базы данных будет создан прямо в директории вашего проекта рядом с Python-модулем.» #

Техническая деталь конфигурации путей для SQLite.

«Relationship — это не колонка в таблице. Это способ выполнения дополнительного SQL-запроса в фоне, чтобы удобно связать объекты в коде.» #

Разъяснение того, как работает связь между таблицами.

«Используйте UTC при сохранении даты и времени. Это критически важно для согласованности данных в распределенных системах.» #

Рекомендация по работе с временными метками.

Похожие по теме

Читать далее

Мастерство управления Python-проектами: ускоряем рабочий процесс с помощью UV

Corey Schafer

Мастерство управления Python-проектами: ускоряем рабочий процесс с помощью UV

Corey Schafer

Понравился экстракт?
Подписывайтесь — лучшие материалы каждую неделю.
Telegram Дайджест →

Поделитесь с коллегами

Telegram ВКонтакте X / Twitter
Открыть в Telegram

Экстракт Знаний в Telegram

Экстракты и дистилляты из лучших YouTube-каналов — сразу после публикации.

Подписаться

Дайджест Экстрактов

Лучшие методички за неделю — каждый понедельник