Você tem duas opções. Você pode passar a condição de junção em
join
igual a:j = join(users, comments, onclause=users.c.id == commends.c.user_id)
Se você estiver definindo isso em termos de um
orm.relationship
propriedade, o parâmetro de palavra-chave será primaryjoin
em vez de onclause
. No entanto, a abordagem que prefiro é apenas mentir . Informe ao SQLAlchemy que existe uma chave estrangeira, mesmo que não exista.
comments = Table('comments', metadata,
Column('id', Integer, primary_key=True),
Column('user_id', Integer, ForeignKey('users.id')),
...
)
SQLAlchemy irá proceder como se a chave estrangeira estivesse de fato presente, mesmo que o banco de dados real não tenha isso. Claro, você pode ter problemas se a restrição implícita de chave estrangeira for violada (
comments.user_id
quando não há users.id
correspondente ), mas você provavelmente estaria em apuros de qualquer maneira.