Страницы

Поиск по вопросам

вторник, 25 февраля 2020 г.

sqlalchemy отношения

#python #flask #sqlalchemy




Товарищи, подскажите, как с помощью sqlalchemy организовать такой функционал. Есть
две таблицы: категории и под категории, во второй есть ключ на первую. Когда создается
компания, она должна указывать направление деятельности, но ее деятельность, может
быть гораздо уже и ограничиваться несколькими элементами из этой категории. Покажите,
пример, как описать классы, и чтобы можно было получить все категории компании, категории
и их под категории, а так же, чтобы по (под категориям и категориям) я мог найти все
компании.
    


Ответы

Ответ 1



А есть ли смысл разделять категории и подкатегории? Сделайте одну таблицу категорий, у которых есть ссылка на родительскую категорию (на себя же). Это позволит произвольную вложенность подкатегорий и уберет лишнюю сущность. Получится что-то вроде такого: from sqlalchemy.ext.declarative import declarative_base from sqlalchemy import Column, Integer, String from sqlalchemy import ForeignKey from sqlalchemy.orm import relationship Base = declarative_base() class Company(Base): __tablename__ = 'company' id = Column(Integer, primary_key=True) name = Column(String) def __repr__(self): return '>> c1 = Company(name='Google') >>> c2 = Company(name='Yahoo') >>> cat1 = Category(name='IT') >>> cat2 = Category(name='Search engine', parent=cat1) >>> cat1.subcategories [>> cat2.parent >>> c1.categories.extend([Relationship(category=cat1), Relationship(category=cat2)]) >>> c1.categories [>> c1.categories[1].category.name 'Search engine' >>> c2.categories []

Комментариев нет:

Отправить комментарий