2つのオプションがあります。 join
で結合条件を渡すことができます そのように:
j = join(users, comments, onclause=users.c.id == commends.c.user_id)
orm.relationship
の観点からこれを定義している場合 プロパティの場合、キーワードパラメータはprimaryjoin
になります onclause
の代わりに 。
ただし、私が好むアプローチは、単に嘘をつくことです。 。外部キーがない場合でも、外部キーがあることをSQLAlchemyに通知します。
comments = Table('comments', metadata,
Column('id', Integer, primary_key=True),
Column('user_id', Integer, ForeignKey('users.id')),
...
)
SQLAlchemyは、実際のデータベースに外部キーがない場合でも、外部キーが実際に存在するかのように処理を進めます。もちろん、暗黙の外部キー制約に違反すると、問題が発生する可能性があります(comments.user_id
対応するusers.id
がない場合 )、しかしあなたはおそらくとにかく困っているでしょう。