sql >> Database >  >> RDS >> Mysql

Hoe een relatie van veel tot veel te creëren in SQLAlchemy (python, flask) voor modelgebruiker tot zichzelf

Het patroon dat u probeert te implementeren, is een speciaal geval van een veel-op-veel-relatie. SQLAlchemy noemt dit een Adjacency List-relatie, en ik raad aan om de code daar te volgen:

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

De sleutel is de 'remote_side' kwarg daar.

Dit is waarom:de fout die je krijgt is omdat je associatietabel ('vrienden') twee externe sleutels heeft die verwijzen naar tabel 'gebruikers':één in kolom 'user_id' en één in kolom 'friend_id'. SQLAlchemy probeert relaties automatisch te detecteren op basis van externe sleutels, maar dit mislukt omdat het niet kan zien in welke richting de relatie gaat. Dus als je een vermelding hebt in de tabel 'vrienden', zoals zo

user_id   : 1
friend_id : 2

SQLAlchemy kan niet zien of user_1 user_2 als vriend heeft, of omgekeerd.

Als dat verwarrend lijkt, is dat het ook. Vriendschap in de zin van sociale netwerken kan unijectief zijn , in welk geval user_1 vriend user_2 heeft niet betekent dat user_2 user_1 als vriend heeft; of het kan bijjectief zijn , in welk geval de twee equivalent zijn. Ik laat hier mijn leeftijd zien, maar de eerste wordt vertegenwoordigd door Livejournal, terwijl de laatste wordt vertegenwoordigd door Facebook.

Ik weet niet uit mijn hoofd hoe ik een unieke relatie in SQLAlchemy moet implementeren. Het is een lelijke UNION ALL of iets dergelijks in MySQL.



  1. Waarom behandelt Oracle 9i een lege string als NULL?

  2. Selecteer meerdere veldduplicaten uit MySQL Database

  3. niet-ondersteund Scannen, stuurprogramma opslaan. Waarde type []uint8 in type *time.Time

  4. Hoe dit op te lossen in Mysql (#1242 - Subquery retourneert meer dan 1 rij)?