Du har två alternativ. Du kan klara anslutningsvillkoret i join
som så:
j = join(users, comments, onclause=users.c.id == commends.c.user_id)
Om du definierar detta i termer av en orm.relationship
egenskapen kommer nyckelordsparametern att vara primaryjoin
istället för onclause
.
Men det tillvägagångssätt jag föredrar är att bara ljuga . Informera SQLAlchemy att det finns en främmande nyckel, även om det inte finns det.
comments = Table('comments', metadata,
Column('id', Integer, primary_key=True),
Column('user_id', Integer, ForeignKey('users.id')),
...
)
SQLAlchemy kommer att fortsätta som om den främmande nyckeln faktiskt var närvarande, även om den faktiska databasen inte har det. Naturligtvis kan du stöta på problem om den implicita utländska nyckelbegränsningen överträds (comments.user_id
när det inte finns något motsvarande users.id
), men du skulle förmodligen ha problem ändå.