sql >> Database teknologi >  >> RDS >> Mysql

Hvordan man skaber relationer mange til mange i SQLAlchemy (python, kolbe) for model Bruger til sig selv

Det mønster, du forsøger at implementere, er et særligt tilfælde af mange-til-mange-forhold. SQLAlchemy kalder dette et Adjacency List Relationship, og jeg anbefaler, at du prøver at følge koden der:

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

Nøglen er 'remote_side' kwarg der.

Her er grunden:fejlen, du får, skyldes, at din tilknytningstabel ('venner') har to fremmednøgler, der peger på tabellen 'brugere':en på kolonne 'bruger_id' og en på kolonne 'ven_id'. SQLAlchemy forsøger at auto-detektere relationer baseret på fremmednøgler, men det mislykkes, fordi det ikke kan fortælle, hvilken retning relationen går. Så hvis du har en post i tabellen 'venner' som sådan

user_id   : 1
friend_id : 2

SQLAlchemy kan ikke fortælle, om user_1 har user_2 som ven eller omvendt.

Hvis det virker forvirrende, er det det. Venskab i betydningen sociale netværk kan være unijektivt , i hvilket tilfælde bruger_1 har ven bruger_2 betyder ikke, at bruger_2 har bruger_1 som ven; eller det kan være bijektivt , i hvilket tilfælde de to er ækvivalente. Jeg viser min alder her, men førstnævnte er repræsenteret af Livejournal, mens sidstnævnte er repræsenteret af Facebook.

Jeg ved ikke helt, hvordan man implementerer et unijektivt forhold i SQLAlchemy. Det er en grim UNION ALL eller sådan noget i MySQL.



  1. Enhver grund til ikke at bruge PostgreSQL's indbyggede fuldtekstsøgning på Heroku?

  2. der opstod en fejl under oprettelse af forbindelse til SQL Server

  3. opdater brugerlisten i gruppen:OPDATERING eller SLET + INDSÆT

  4. Hvordan bruger man ordre fra i Laravel, når den bruger CASE HVORNÅR?