Mysql
 sql >> база данни >  >> RDS >> Mysql

SQLAlchemy и се присъединява, нямаме външни ключове

Имате две възможности. Можете да предадете условието за присъединяване в 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 ), но така или иначе вероятно ще имате проблеми.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Използване на MySQL IN клауза като all inclusive (И вместо ИЛИ)

  2. Mysqli заявка с инструкция за променлива SET (т.е. множество заявки)

  3. Грешка в съвместимостта на доставчика на база данни на базата данни

  4. Joomla! 3 инсталация замръзва при създаване на таблица с база данни

  5. Ръководство за проектиране на база данни за анкети и анкети в MySQL