Моделирование данных является важным процессом в веб-разработке, позволяющим структурированно представлять и управлять данными в приложении. В веб-фреймворке Flask это обычно осуществляется с помощью SQLAlchemy, мощного инструмента ORM (Object Relational Mapping). В этой статье мы рассмотрим создание реляционной модели категорий во Flask, демонстрируя принципы моделирования данных, отношений и предоставляя практический пример через мини-проект.

Введение во Flask и SQLAlchemy

Flask — это легковесный веб-фреймворк для приложений WSGI на Python. SQLAlchemy для работы с базами данных дает набор хорошо известных паттернов устойчивости на уровне предприятий. Это предпочтительный инструмент во Flask для операций с базой данных из-за его универсальности и мощных возможностей ORM.

ОНЛАЙН-ПРАКТИКУМ
ЗАПУСК DEEPSEEK R1 ЛОКАЛЬНО НА СВОЕМ КОМПЬЮТЕРЕ
ЧТО БУДЕТ НА ОБУЧЕНИИ?
  • ПОКАЖЕМ, КАК РАЗВЕРНУТЬ МОДЕЛЬ DEEPSEEK R1 ПРЯМО НА СВОЁМ КОМПЬЮТЕРЕ
  • Где и как применять? Потестируем модель после установки на разных задачах
  • Как дообучить модель под себя?

Настройка вашего окружения Flask

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

  • Установите Flask и SQLAlchemy: используйте pip для установки Flask и SQLAlchemy.
pip install Flask Flask-SQLAlchemy
  • Инициализируйте ваше приложение: создайте файл app.py и настройте ваше приложение и базу данных.
from flask import Flask

from flask_sqlalchemy import SQLAlchemy

app = Flask(__name__)

app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///site.db'

db = SQLAlchemy(app)
  • Запустите ваше приложение: убедитесь, что все работает, запустив ваше приложение.
flask run

Создание реляционной модели категорий

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

Определение моделей

  • Модель: эта модель представляет категории в вашем приложении. Каждая имеет подкатегории, формируя отношение родитель-потомок.
class Category(db.Model):

id = db.Column(db.Integer, primary_key=True)

name = db.Column(db.String(100), nullable=False)

parent_id = db.Column(db.Integer, db.ForeignKey('category.id'), nullable=True)

subcategories = db.relationship('Category', backref=db.backref('parent', remote_side=[id]), lazy=True)
  • Реализация отношений: отношение subcategories в модели Category демонстрирует, как связывать категории. Столбец parent_id является внешним ключом, который ссылается на id родительской категории, позволяя SQLAlchemy понимать иерархическую структуру.

Создание мини-проекта

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

  • Инициализируйте базу данных: сначала создайте базу данных и таблицы.
db.create_all()
  • Заполните базу данных: добавьте несколько категорий для начала.
main_category = Category(name='Электроника')

sub_category = Category(name='Смартфоны', parent=main_category)

db.session.add(main_category)

db.session.add(sub_category)

db.session.commit()
  • Отобразите: измените ваш app.py, чтобы перечислить элементы.
@app.route('/')

def home():

categories = Category.query.all()

return render_template('home.html', categories=categories)
  • Создайте шаблон: наконец, создайте файл templates/home.html для отображения категорий.
<ul>

{% for category in categories %}

<li>{{ category.name }}

{% if category.subcategories %}

<ul>

{% for sub in category.subcategories %}

<li>{{ sub.name }}</li>

{% endfor %}

</ul>

{% endif %}

</li>

{% endfor %}

</ul>

Заключение

Моделирование данных во Flask с использованием SQLAlchemy предоставляет прочную основу для представления и управления реляционными данными. Следуя изложенным выше шагам, вы можете создать реляционную модель категорий, которая эффективно структурирует данные вашего приложения. Эта модель не только облегчает организацию данных, но также улучшает масштабируемость и обслуживаемость вашего приложения.

Большой практикум
ЗАМЕНИ ВСЕ НЕЙРОСЕТИ НА ОДНУ — PERPLEXITY
ПОКАЖЕМ НА КОНКРЕТНЫХ КЕЙСАХ
  • Освой Perplexity и узнай, как пользоваться функционалом остальных ИИ в одном
  • УЧАСТВОВАТЬ ЗА 0 РУБ.
  • Расскажем, как получить подписку (240$) бесплатно
Участвовать бесплатно
ОНЛАЙН-ПРАКТИКУМ
ЗАПУСК DEEPSEEK R1 ЛОКАЛЬНО НА СВОЕМ КОМПЬЮТЕРЕ
ЧТО БУДЕТ НА ОБУЧЕНИИ?
  • ПОКАЖЕМ, КАК РАЗВЕРНУТЬ МОДЕЛЬ DEEPSEEK R1 ПРЯМО НА СВОЁМ КОМПЬЮТЕРЕ
Участвовать бесплатно