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

Cách tạo mối quan hệ nhiều với nhiều trong SQLAlchemy (python, flask) cho người dùng mô hình với chính nó

Mô hình bạn đang cố gắng triển khai là một trường hợp đặc biệt của mối quan hệ nhiều người. SQLAlchemy gọi đây là Mối quan hệ Danh sách Gần kề và tôi khuyên bạn nên thử làm theo mã ở đó:

http://docs.sqlalchemy.org/en /rel_0_9/orm/relationships.html#adjacency-list-relationships

Chìa khóa là kwarg 'remote_side' ở đó.

Đây là lý do tại sao:lỗi mà bạn gặp phải là do bảng liên kết của bạn ('bạn bè') có hai khóa ngoại trỏ đến bảng 'người dùng':một trên cột 'user_id' và một trên cột 'friend_id'. SQLAlchemy cố gắng tự động phát hiện các mối quan hệ dựa trên các khóa ngoại, nhưng nó không thành công vì nó không thể cho biết mối quan hệ đi theo hướng nào. Vì vậy, nếu bạn có một mục trong bảng 'bạn bè' như vậy

user_id   : 1
friend_id : 2

SQLAlchemy không thể biết liệu user_1 có user_2 là bạn hay ngược lại.

Nếu điều đó có vẻ khó hiểu, thì đúng là như vậy. Tình bạn theo nghĩa của các mạng xã hội có thể là duy nhất , trong trường hợp người dùng_1 có bạn là người dùng_2 không có nghĩa là người dùng_2 có người dùng_1 là bạn; hoặc nó có thể là bijective , trong trường hợp đó cả hai là tương đương. Tôi đang hiển thị tuổi của mình ở đây, nhưng cái trước được đại diện bởi Livejournal, trong khi cái sau được đại diện bởi Facebook.

Tôi không biết cách triển khai mối quan hệ thống nhất trong SQLAlchemy. Đó là một UNION TẤT CẢ hoặc một cái gì đó tương tự trong MySQL.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Lệnh python setup.py egg_info không thành công với mã lỗi 1 trong / tmp / pip-install-fs0wmmw4 / mysqlclient /

  2. Xóa Ajax không hoạt động trong laravel 5.2

  3. Codeigniter ActiveRecord:tham gia backticking

  4. Lỗi cú pháp PDO Mysql 1064

  5. Các truy vấn mysql động với sql thoát có an toàn như các câu lệnh đã chuẩn bị không?