I think I see the error. Those are the whole tables:
class User(rdb.Model):
"""Represents the user"""
rdb.metadata(metadata)
rdb.tablename("users")
id = Column("id", Integer, primary_key=True)
name = Column("name", String(50))
email = Column("email", String(50))
password = Column("password", String(50))
hashed = Column("hashed", Boolean)
military = Column("military", Boolean)
agreedLicense = Column("agreed_license", Boolean)
userGroupId = Column("user_group_id", Integer,
ForeignKey("user_groups.id"))
userGroup = relationship("UserGroup", uselist=False)
channels = relationship("Channel", secondary=user_channels,
order_by="Channel.titleView", backref="users")
mediaGroups = relationship("MediaGroup", secondary=user_media_groups,
order_by="MediaGroup.title", backref="users")
screens = relationship("Screen", secondary=user_screens,
backref="users")
screenGroups = relationship("ScreenGroup",
secondary=user_screen_groups, order_by="ScreenGroup.title",
backref="users")
class UserGroup(rdb.Model):
"""Represents a group of users with the same features"""
rdb.metadata(metadata)
rdb.tablename("user_groups")
id = Column("id", Integer, primary_key=True)
title = Column("title", String(50))
users = relationship("User", order_by="User.name", cascade="all,
delete", backref="user_groups")
permissions = relationship("Permission",
secondary=user_group_permissions, backref="user_groups")
I have pretty similar tables and relations, but the different with
other tables is I have this relation: userGroupId =
Column("user_group_id", Integer, ForeignKey("user_groups.id")). So it
seems every time when a user is created, it creates a new row in the
user_groups and that row is related to that user. I think it's because
of that relation.
How could I avoid this?
Thanks!
On Dec 1, 6:35 pm, Michael Bayer <[email protected]> wrote:
> On Dec 1, 2010, at 5:46 PM, Alvaro Reinoso wrote:
>
>
>
> > Hello,
>
> > I have a system to manage users in my application, but I'm getting
> > some troubles with it.
>
> > Every user has to belong to a group of users. One user can only be in
> > one group.
>
> > I have those tables (inheriting from rdb.Model is basically the same
> > thing than using sqlalchemy's declarative model)
>
> > class User(rdb.Model):
> > """Represents the user"""
> > rdb.metadata(metadata)
> > rdb.tablename("users")
>
> > id = Column("id", Integer, primary_key=True)
> > name = Column("name", String(50))
> > ....
>
> > userGroup = relationship("UserGroup", uselist=False)
> > .....
>
> > class UserGroup(rdb.Model):
> > """Represents a group of users with the same features"""
> > rdb.metadata(metadata)
> > rdb.tablename("user_groups")
>
> > id = Column("id", Integer, primary_key=True)
> > title = Column("title", String(50))
>
> > users = relationship("User", order_by="User.name", cascade="all,
> > delete, delete-orphan", backref="user_groups")
> > ....
>
> > I have a script which migrate users from a pre-existing Zope DB
> > (object-oriented):
>
> > def migrateUsers():
> > """Migrate all the users to the database"""
> > session = rdb.Session()
> > rScreens = session.query(Screen).all()
> > rUserGroups = session.query(UserGroup).all()
> > .....
>
> > for oldUser in grok.getSite()['Users'].values():
> > user = User()
> > ......
> > for newGroup in rUserGroups:
> > if newGroup.title == "superadmins":
> > newGroup.users.append(user)
> > ......
>
> > return
>
> > When I execute the script, the user_groups are properly created and
> > the users are properly added to the user_groups they should belong to,
> > but I get empty "group" entries in the database, and I don't know why
>
> > I have made some tests, and I've realized that I get an empty entry
> > (an empty user_group) every time I try to add a user to a user_group,
> > but I don't know what is causing this behavior.
>
> theres no instantiation of UserGroup indicated above so no indication of what
> would be creating extra "group" rows in your database.
>
>
>
> > Any hint will be appreciated.
>
> > --
> > You received this message because you are subscribed to the Google Groups
> > "sqlalchemy" group.
> > To post to this group, send email to [email protected].
> > To unsubscribe from this group, send email to
> > [email protected].
> > For more options, visit this group
> > athttp://groups.google.com/group/sqlalchemy?hl=en.
--
You received this message because you are subscribed to the Google Groups
"sqlalchemy" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to
[email protected].
For more options, visit this group at
http://groups.google.com/group/sqlalchemy?hl=en.