Máte dvě možnosti. Podmínku spojení můžete předat v join
takhle:
j = join(users, comments, onclause=users.c.id == commends.c.user_id)
Pokud to definujete z hlediska orm.relationship
vlastnost, bude parametr klíčového slova primaryjoin
místo onclause
.
Nicméně přístup, který preferuji, je prostě lhát . Informujte SQLAlchemy, že existuje cizí klíč, i když není.
comments = Table('comments', metadata,
Column('id', Integer, primary_key=True),
Column('user_id', Integer, ForeignKey('users.id')),
...
)
SQLAlchemy bude postupovat, jako by byl cizí klíč ve skutečnosti přítomen, i když ho skutečná databáze nemá. Samozřejmě se můžete dostat do problémů, pokud dojde k porušení implikovaného omezení cizího klíče (comments.user_id
když neexistuje odpovídající users.id
), ale stejně byste pravděpodobně měli potíže.