Du har to muligheder. Du kan bestå deltagelsesbetingelsen i join
sådan:
j = join(users, comments, onclause=users.c.id == commends.c.user_id)
Hvis du definerer dette i form af et orm.relationship
egenskab, vil søgeordsparameteren være primaryjoin
i stedet for onclause
.
Den tilgang, jeg foretrækker, er dog bare at lyve . Informer SQLAlchemy om, at der er en fremmednøgle, selvom den ikke er det.
comments = Table('comments', metadata,
Column('id', Integer, primary_key=True),
Column('user_id', Integer, ForeignKey('users.id')),
...
)
SQLAlchemy vil fortsætte, som om den fremmede nøgle faktisk var til stede, selvom den faktiske database ikke har det. Selvfølgelig kan du løbe ind i problemer, hvis den underforståede fremmednøglebegrænsning overtrædes (comments.user_id
når der ikke er noget tilsvarende users.id
), men du ville sandsynligvis være i problemer alligevel.