Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Cara membuat hubungan banyak ke banyak di SQLAlchemy (python, flask) untuk model Pengguna untuk dirinya sendiri

Pola yang Anda coba terapkan adalah kasus khusus dari hubungan banyak ke banyak. SQLAlchemy menyebut ini sebagai Hubungan Daftar Ketetanggaan, dan saya sarankan untuk mencoba mengikuti kode di sana:

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

Kuncinya adalah kwarg 'remote_side' di sana.

Inilah alasannya:kesalahan yang Anda dapatkan adalah karena tabel asosiasi Anda ('teman') memiliki dua kunci asing yang menunjuk ke tabel 'pengguna':satu di kolom 'user_id', dan satu di kolom 'friend_id'. SQLAlchemy mencoba mendeteksi hubungan secara otomatis berdasarkan kunci asing, tetapi gagal karena tidak dapat menentukan arah hubungan. Jadi jika Anda memiliki entri di tabel 'teman' seperti itu

user_id   : 1
friend_id : 2

SQLAlchemy tidak bisa membedakan apakah user_1 memiliki user_2 sebagai teman, atau sebaliknya.

Jika itu tampak membingungkan, memang begitu. Persahabatan dalam arti jejaring sosial bisa unijektif , dalam hal ini pengguna_1 memiliki teman pengguna_2 tidak berarti bahwa pengguna_2 memiliki pengguna_1 sebagai teman; atau bisa juga bijektif , dalam hal ini keduanya setara. Saya menunjukkan usia saya di sini, tetapi yang pertama diwakili oleh Livejournal, sedangkan yang terakhir diwakili oleh Facebook.

Saya tidak tahu dari atas kepala saya bagaimana menerapkan hubungan unijective di SQLAlchemy. Ini adalah UNION ALL yang jelek atau semacamnya di 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. Mysqlimport dari pipa

  2. Haruskah saya menggunakan NULL atau string kosong untuk mewakili tidak ada data di kolom tabel?

  3. Bagaimana cara menambahkan batasan bukan nol ke kolom yang ada di MySQL

  4. MySQL memotong teks dengan elipsis

  5. Impor Selektif dari CSV ke MySQL