Hai due opzioni. Puoi superare la condizione di adesione in join
così:
j = join(users, comments, onclause=users.c.id == commends.c.user_id)
Se lo stai definendo in termini di orm.relationship
proprietà, il parametro della parola chiave sarà primaryjoin
invece di onclause
.
Tuttavia, l'approccio che preferisco è semplicemente mentire . Informa SQLAlchemy che esiste una chiave esterna, anche se non esiste.
comments = Table('comments', metadata,
Column('id', Integer, primary_key=True),
Column('user_id', Integer, ForeignKey('users.id')),
...
)
SQLAlchemy procederà come se la chiave esterna fosse effettivamente presente, anche se il database effettivo non lo ha. Naturalmente, potresti avere problemi se il vincolo implicito della chiave esterna viene violato (comments.user_id
quando non esiste un users.id
corrispondente ), ma probabilmente saresti comunque nei guai.