Vous avez deux options. Vous pouvez passer la condition de jointure dans join
comme ceci :
j = join(users, comments, onclause=users.c.id == commends.c.user_id)
Si vous définissez cela en termes de orm.relationship
propriété, le paramètre de mot-clé sera primaryjoin
au lieu de onclause
.
Cependant, l'approche que je préfère consiste simplement à mentir . Informez SQLAlchemy qu'il existe une clé étrangère, même si ce n'est pas le cas.
comments = Table('comments', metadata,
Column('id', Integer, primary_key=True),
Column('user_id', Integer, ForeignKey('users.id')),
...
)
SQLAlchemy procédera alors comme si la clé étrangère était en fait présente, même si la base de données réelle ne l'a pas. Bien sûr, vous pouvez rencontrer des problèmes si la contrainte de clé étrangère implicite est violée (comments.user_id
lorsqu'il n'y a pas de users.id
correspondant ), mais vous auriez probablement des ennuis de toute façon.