Задать вопрос
@alanforester

Как связать SQLAlchemy модели 1 к 1 по полю id?

Добрый день! Имеется 2 таблицы где, у каждой поле id является зависимым ключом друг на друга.
Имеются модели в declarative base
class Article(MPInsideBase):
    """Модель Article."""

    __tablename__ = "wb_ws_article"

    id = Column(BigInteger(), ForeignKey(Product.id), unique=True, primary_key=True)
    product: Mapped[Product] = Relationship(
        remote_side=Product.id, foreign_keys="Article.id",
    )

class Product(MPInsideBase):
    """Модель продукта."""

    __tablename__ = "wb_products"

    id = Column(BigInteger(), unique=True, primary_key=True)
    article: Mapped["Article"] = Relationship("Article", back_populates="product")


И код который ими пользуется
async with self.db.session() as session:
            print(filter_stmt.get('id'))
            stmt = select(Article, Product).join(Product).filter_by(**filter_stmt)
            if options:
                for option in options:
                    stmt = stmt.options(option)

            result = await session.scalars(stmt)
            model = result.one()
            product = model.product
            print(vars(product))

            return model

При запуске получаю следующую ошибку

sqlalchemy.exc.MissingGreenlet: greenlet_spawn has not been called; can't call await_only() here. Was IO attempted in an unexpected place? (Background on this error at: https://sqlalche.me/e/20/xd2s)


Может кто нибудь связывал такие таблицы через sqlalchemy, что бы данные прилетали вместе с Product когда я запрашиваю данные из Article?
  • Вопрос задан
  • 44 просмотра
Подписаться 1 Простой 5 комментариев
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы