Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

SQLAlchemy và tham gia, chúng tôi không có khóa ngoại

Bạn có hai lựa chọn. Bạn có thể vượt qua điều kiện tham gia trong join như vậy:

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

Nếu bạn đang xác định điều này theo nghĩa của một orm.relationship thuộc tính, tham số từ khóa sẽ là primaryjoin thay vì onclause .

Tuy nhiên, cách tiếp cận mà tôi thích là chỉ nói dối . Thông báo cho SQLAlchemy rằng có khóa ngoại, mặc dù không có.

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

SQLAlchemy sẽ tiến hành như thể khóa ngoại thực sự có mặt, mặc dù cơ sở dữ liệu thực tế không có điều đó. Tất nhiên, bạn có thể gặp rắc rối nếu ràng buộc khóa foriegn ngụ ý bị vi phạm (comments.user_id khi không có users.id tương ứng ), nhưng dù sao thì bạn cũng có thể gặp rắc rối.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Có một lệnh MySQL để triển khai một cái gì đó như bảng thả ngoại trừ t1, b2 không?

  2. Chuẩn hóa trong MYSQL

  3. Chọn ngày trong tuần từ ngày

  4. Làm cách nào để tạo một mô hình Django với ForeignKeys mà mô hình này không xóa phân tầng cho các mô hình con của nó?

  5. MySql:Cấp các tùy chọn chỉ đọc?