Sie haben zwei Möglichkeiten. Sie können die Join-Bedingung in join
übergeben etwa so:
j = join(users, comments, onclause=users.c.id == commends.c.user_id)
Wenn Sie dies in Bezug auf eine orm.relationship
definieren -Eigenschaft ist der Schlüsselwortparameter primaryjoin
statt onclause
.
Mein bevorzugter Ansatz ist jedoch, einfach zu lügen . Informieren Sie SQLAlchemy, dass ein Fremdschlüssel vorhanden ist, obwohl dies nicht der Fall ist.
comments = Table('comments', metadata,
Column('id', Integer, primary_key=True),
Column('user_id', Integer, ForeignKey('users.id')),
...
)
SQLAlchemy wird dann so vorgehen, als ob der Fremdschlüssel tatsächlich vorhanden wäre, obwohl die eigentliche Datenbank diesen nicht hat. Natürlich kann es zu Problemen kommen, wenn die implizierte Fremdschlüsselbeschränkung verletzt wird (comments.user_id
wenn es keine entsprechende users.id
gibt ), aber Sie würden wahrscheinlich sowieso in Schwierigkeiten geraten.