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.