我遇到过使用一个表来存储用户和组相关数据的情况。该栏称为简档。所以,基本上这个表格是多对多表格,用于一个用户属于多个组或者一个组中有许多用户的情况。SQLAlchemy递归多对多关系
我有点困惑应该如何描述?
下面是类的简单介绍。
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]
一般来说,对于多对多,您需要3个表格 - 比较中的两个对象各一个,第三个表格包含两个满足关系的对象的主键的记录。 这就是说,我不知道我明白这个问题... – 2010-06-30 13:11:42