Как получить объекты привязанные к таблице SQLAlchemy

Есть 2 таблицы:

class Backpack(db.Model):
    __tablename__ = 'back'

    id = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.String(200))

class Apple(db.Model):
    __tablename__ = 'apple'

    id = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.String(250))
    apple = db.Column(db.ForeignKey('backpack.id'), nullable=False)

Как получить все объекты привязанные к Backpack через ForeignKey?


Ответы (1 шт):

Автор решения: Andrew Holovko
  1. У вас связь не построится, из-за того, что нет таблицы backpack, следует указать ForeignKey('back.id'). Иначе при создании таблиц будет ошибка.
  2. Вам надо проставить relation, чтобы можно было через orm к ним потом обращаться
b = session.query(models.Backpack).first()
print(b.apples)

Вот готовые модели:

from sqlalchemy import *
from sqlalchemy.orm import relationship, relation


class Backpack(Base):
    __tablename__ = 'back'

    id = Column(Integer, primary_key=True)
    name = Column(String(200))
    apples = relationship("Apple", back_populates="backpack")

class Apple(Base):
    __tablename__ = 'apple'

    id = Column(Integer, primary_key=True)
    name = Column(String(250))
    backpack_id = Column(ForeignKey("back.id"), nullable=False)
    backpack = relationship("Backpack", back_populates="apples")

Документация на которую я опирался. https://docs.sqlalchemy.org/en/13/orm/basic_relationships.html

Проверено, работает.

→ Ссылка