Mysql
 sql >> Baza danych >  >> RDS >> Mysql

SQLAlchemy i złączenia, nie mamy kluczy obcych

Masz dwie opcje. Możesz przekazać warunek dołączenia w join jak tak:

j = join(users, comments, onclause=users.c.id == commends.c.user_id)

Jeśli definiujesz to w kategoriach orm.relationship właściwość, parametrem słowa kluczowego będzie primaryjoin zamiast onclause .

Jednak podejście, które wolę, to po prostu kłamać . Poinformuj SQLAlchemy, że istnieje klucz obcy, nawet jeśli go nie ma.

comments = Table('comments', metadata,
    Column('id', Integer, primary_key=True),
    Column('user_id', Integer, ForeignKey('users.id')),
    ...
)

SQLAlchemy będzie postępować tak, jakby klucz obcy rzeczywiście był obecny, nawet jeśli w rzeczywistej bazie danych go nie ma. Oczywiście możesz mieć kłopoty, jeśli zostanie naruszone ograniczenie dorozumianego klucza obcego (comments.user_id gdy nie ma odpowiadającego users.id ), ale i tak prawdopodobnie miałbyś kłopoty.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Składnia SQL TRUNCATE – wymieniona przez DBMS

  2. Jaki typ zmapowałbyś BigDecimal w Javie/Hibernacji w MySQL?

  3. Jak przekazać zmienną do klauzuli IN?

  4. MySQL Select Query — Uzyskaj tylko pierwsze 10 znaków wartości

  5. Wady cytowania liczb całkowitych w zapytaniu Mysql?