J'ai un modèle SQLAlchemy mis en place dans mon application qui devrait imiter la fonctionnalité de "followers" sur Twitter, ie. les utilisateurs ont une relation plusieurs-à-plusieurs entre eux (les suiveurs et les suivants). Les tables sont structurées comme suit (sa est le module sqlalchemy):SQLAlchemy relation plusieurs-à-plusieurs sur une seule table
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)
)
J'ai rencontré un peu d'un barrage routier cependant, en essayant d'utiliser orm.mapper pour créer cette relation, puisque la table secondaire renvoie à la même table primaire dans les deux directions. Comment pourrais-je cartographier cette relation avec l'ORM?
Merci, cela a parfaitement fonctionné. Voulez-vous dire que la table suivante ne nécessite pas de colonne ID et peut utiliser un PK composite? Je ne vois pas comment cela pourrait fonctionner avec la table des utilisateurs. – Travis
Oui, c'était une erreur. Je voulais dire suit la table. –
Je me suis heurté à cela et j'ai dû le faire de manière déclarative, voici l'équivalent pour les futurs découvreurs. –