SQL Алхимия: загрузка моделей и тестирование отношений - PullRequest
0 голосов
/ 08 апреля 2020

Я не могу найти конкретные примеры для проверки отношений.

У меня есть 2 модели (представьте себе Twitter, пользователи могут подписываться друг на друга):

class User(Base):
    """Table schema containing profiles."""

    __tablename__ = "users"

    id = Column(UUID(as_uuid=True), primary_key=True)

    following = relationship('User',
        secondary='followers',
        primaryjoin='User.id==Follower.user_id',
        secondaryjoin='Follower.user_id==User.id'
    )   


class Follower(Base):
    __tablename__ = 'followers'

    user_id = Column(UUID(as_uuid=True), ForeignKey('users.id'), primary_key=True)
    follows_user_id = Column(UUID(as_uuid=True), ForeignKey('users.id'), primary_key=True)

Чтобы проверить это, я создаю пользователя и несколько отношений. Я хотел бы найти следующие отношения: 1. Учитывая пользователя, найти всех его последователей. 2. По заданному пользователю найдите всех пользователей, за которыми он следует.

Следовательно, я попытался:

u1 = User(id=uuid4())
u2 = User(id=uuid4())

f1 = Follower(user_id=u1, follows_user_id=u2)
f2 = Follower(user_id=u1, follows_user_id=u1)

print(u1.following)
>>> []

Однако это пустой список. Почему? Я ожидал увидеть [u1, u2].

Я дополнительно попробовал:

u1 = User(id=uuid4())
u2 = User(id=uuid4())

f1 = Follower()
f1.user_id = u1
f1.follows_user_id = u2 

session.add(u1)
session.add(u2)
session.add(f1)
session.commit()
session.query(u1.following)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...