免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 3578 | 回复: 0

[Python][sqlalchemy] 请教如何删除/修改一个用户的多对多映射记录? [复制链接]

论坛徽章:
0
发表于 2012-02-06 17:02 |显示全部楼层
20可用积分
本帖最后由 huhuegg 于 2012-02-06 17:08 编辑

PtermUser表和UserGroup表有多对多关系,保存在UserGroupMember表中
请教如何删除/修改一个用户的多对多映射记录?
是在turbogears2中使用的

例如: PtermUser表中有一条UserID=1的用户记录,UserGroup表中有3条记录,分别为UserGroupID=1,UserGroupID=2,UserGroupID=3,
        UserGroupMember表当前记录如下:
        UserID    UserGroupID
        1            1
        1            2
        如希望UserGroupMember表记录修改为:
        UserID    UserGroupID
        1            2
        1            3

相关表定义如下:

"""
+-------------+----------+------+-----+---------+-------+
| Field       | Type     | Null | Key | Default | Extra |
+-------------+----------+------+-----+---------+-------+
| UserGroupID | int(11)  | NO   | PRI | 0       |       |
| UserID      | char(64) | NO   | PRI |         |       |
+-------------+----------+------+-----+---------+-------+
"""
user_group_member_table = Table('UserGroupMember', metadata,
    Column('UserGroupID', Integer, ForeignKey('UserGroup.UserGroupID',
        onupdate="CASCADE", ondelete="CASCADE"), primary_key=True),
    Column('UserID', Integer, ForeignKey('PtermUser.UserID',
        onupdate="CASCADE", ondelete="CASCADE"), primary_key=True)
)


"""
+---------------+-------------+------+-----+---------------------+----------------+
| Field         | Type        | Null | Key | default             | Extra          |
+---------------+-------------+------+-----+---------------------+----------------+
| UserID        | int(11)     | NO   | PRI | NULL                | auto_increment |
| UserName      | char(64)    | NO   | UNI | NULL                |                |
| Name          | char(64)    | YES  |     | NULL                |                |
+---------------+-------------+------+-----+---------------------+----------------+
"""
class PtermUser(DeclarativeBase):
    __tablename__ = 'PtermUser'
    __table_args__ = {'mysql_engine':'MyISAM','mysql_charset':'utf8'}

    #{ Columns
    UserID = Column(Integer, primary_key=True, autoincrement=True)
    UserName = Column(Unicode(64),unique=True, nullable=False)
    Name = Column(Unicode(64), nullable=False)
    #}

    ptermuser_usergroup = relation('UserGroup', secondary=user_group_member_table, backref='PtermUser')


class UserGroup(DeclarativeBase):
    __tablename__ = 'UserGroup'
    __table_args__ = {'mysql_engine':'MyISAM','mysql_charset':'utf8'}

    #{ Columns
    UserGroupID = Column(Integer, primary_key=True, autoincrement=True)
    UserGroupName = Column(Unicode(64),unique=True, nullable=False)
    Info = Column(Unicode(64), nullable=True)
    #}

    usergroup_ptermuser = relation('PtermUser', secondary=user_group_member_table, backref='UserGroup')

您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP