Ho un modello SQLAlchemy impostato nella mia applicazione che dovrebbe imitare la funzionalità di "follower" su Twitter, es. gli utenti hanno una relazione molti-a-molti tra loro (seguaci e seguaci). Le tabelle sono strutturati come segue (sa è il modulo sqlalchemy):SQLAlchemy Relazione molti-a-molti su una tabella singola
t_users = sa.Table("users", meta.metadata,
sa.Column("id", sa.types.Integer, primary_key=True),
sa.Column("email", sa.types.String(320), unique=True, nullable=False),
...etc...
)
t_follows = sa.Table("follows", meta.metadata,
sa.Column("id", sa.types.Integer, primary_key=True),
sa.Column("follower_id", sa.types.Integer, sa.ForeignKey('users.id'), nullable=False),
sa.Column("followee_id", sa.types.Integer, sa.ForeignKey('users.id'), nullable=False)
)
ho incontrato un po 'di un posto di blocco però, cercando di utilizzare orm.mapper per creare questo rapporto, dal momento che la tabella secondaria rimanda alla stessa tabella primaria in entrambe le direzioni. Come potrei fare per mappare questa relazione con l'ORM?
Grazie, ha funzionato perfettamente. Intendevi che la tabella seguente non richiede una colonna ID e può utilizzare un PK composito? Non vedo come potrebbe funzionare con la tabella degli utenti. – Travis
Sì, è stato un errore. Intendevo la tabella seguente. –
Mi sono imbattuto in questo e ho dovuto farlo in modo dichiarativo, ecco l'equivalente per i cercatori futuri. –