Имате две възможности. Можете да предадете условието за присъединяване в join
така:
j = join(users, comments, onclause=users.c.id == commends.c.user_id)
Ако дефинирате това като orm.relationship
свойство, параметърът на ключовата дума ще бъде primaryjoin
вместо onclause
.
Подходът, който предпочитам обаче, е просто да лъжа . Информирайте SQLAlchemy, че има външен ключ, въпреки че няма.
comments = Table('comments', metadata,
Column('id', Integer, primary_key=True),
Column('user_id', Integer, ForeignKey('users.id')),
...
)
SQLAlchemy ще продължи така, сякаш външният ключ действително присъства, въпреки че действителната база данни го няма. Разбира се, може да срещнете проблеми, ако подразбиращото се ограничение за външен ключ е нарушено (comments.user_id
когато няма съответен users.id
), но така или иначе вероятно ще имате проблеми.