Anda memiliki dua pilihan. Anda dapat melewati kondisi bergabung di join
seperti ini:
j = join(users, comments, onclause=users.c.id == commends.c.user_id)
Jika Anda mendefinisikan ini dalam istilah orm.relationship
properti, parameter kata kunci akan menjadi primaryjoin
bukannya onclause
.
Namun, pendekatan yang saya pilih adalah berbohong . Menginformasikan SQLAlchemy bahwa ada kunci asing, meskipun tidak ada.
comments = Table('comments', metadata,
Column('id', Integer, primary_key=True),
Column('user_id', Integer, ForeignKey('users.id')),
...
)
SQLAlchemy akan melanjutkan seolah-olah kunci asing sebenarnya ada, meskipun database sebenarnya tidak memilikinya. Tentu saja, Anda mungkin mengalami masalah jika batasan kunci asing yang tersirat dilanggar (comments.user_id
ketika tidak ada users.id
yang sesuai ), tetapi Anda mungkin akan tetap berada dalam masalah.