Masz dwie opcje. Możesz przekazać warunek dołączenia w join
jak tak:
j = join(users, comments, onclause=users.c.id == commends.c.user_id)
Jeśli definiujesz to w kategoriach orm.relationship
właściwość, parametrem słowa kluczowego będzie primaryjoin
zamiast onclause
.
Jednak podejście, które wolę, to po prostu kłamać . Poinformuj SQLAlchemy, że istnieje klucz obcy, nawet jeśli go nie ma.
comments = Table('comments', metadata,
Column('id', Integer, primary_key=True),
Column('user_id', Integer, ForeignKey('users.id')),
...
)
SQLAlchemy będzie postępować tak, jakby klucz obcy rzeczywiście był obecny, nawet jeśli w rzeczywistej bazie danych go nie ma. Oczywiście możesz mieć kłopoty, jeśli zostanie naruszone ograniczenie dorozumianego klucza obcego (comments.user_id
gdy nie ma odpowiadającego users.id
), ale i tak prawdopodobnie miałbyś kłopoty.