sql >> Databasteknik >  >> RDS >> Mysql

SQLAlchemy och joins, vi har inga främmande nycklar

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å.




  1. 3 sätt att kontrollera en kolumns datatyp i PostgreSQL

  2. Hur man ansluter till flera SQL-servrar med ett klick (registrerad servergrupp) - SQL Server / TSQL självstudie del 5

  3. Designmönster för anpassade fält i relationsdatabasen

  4. slå samman två olika tabeller och ta bort dubblerade poster