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

- ПОКАЖЕМ, КАК РАЗВЕРНУТЬ МОДЕЛЬ 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 и узнай, как пользоваться функционалом остальных ИИ в одном
- УЧАСТВОВАТЬ ЗА 0 РУБ.
- Расскажем, как получить подписку (240$) бесплатно
- ПОКАЖЕМ, КАК РАЗВЕРНУТЬ МОДЕЛЬ DEEPSEEK R1 ПРЯМО НА СВОЁМ КОМПЬЮТЕРЕ