J'ai un cas où j'utilise une table pour stocker des données relatives à l'utilisateur et au groupe. Cette colonne est appelée profil. Donc, fondamentalement, cette table est une table plusieurs-à-plusieurs pour les cas où un utilisateur appartient à de nombreux groupes ou il y a beaucoup d'utilisateurs dans un groupe.relation SQLAlchemy récursive plusieurs-à-plusieurs
Je suis un peu confus comment il doit être décrit ...
Voici une présentation simplifiée de la classe.
user_group_table = Table('user_group', metadata,
Column('user_id', Integer,ForeignKey('profiles.id',
onupdate="CASCADE", ondelete="CASCADE")),
Column('group_id', Integer, ForeignKey('profiles.id',
onupdate="CASCADE", ondelete="CASCADE"))
)
class Profile(Base)
__tablename__ = 'profiles'
id = Column(Integer, autoincrement=True, primary_key=True)
name = Column(Unicode(16), unique=True) # This can be either user-/groupname
groups = relationship('Profile', secondary=user_group_table, backref = 'users')
users = relationship('Profile', secondary=user_group_table, backref = 'groups')
#Example of the usage:
user = Profile()
user.name = 'Peter'
salesGroup = Profile()
salesGroup.name = 'Sales'
user.groups.append(salesGroup)
salesGroup.users
>[peter]
Généralement, avec beaucoup-à-plusieurs, vous voulez 3 tables - une pour chacun des deux objets dans la comparaison, et une troisième qui contient des enregistrements contenant les clés primaires de deux objets qui satisfont la relation. Cela dit, je ne suis pas sûr de bien comprendre la question ... –