初始化对象的问题

时间:2010-11-01 20:10:19

标签: python sqlalchemy

当我尝试创建一个Screen对象时,我遇到了一个奇怪的错误。之前它没有任何问题,但是当我向User类添加一个新属性时出现了这个错误。此属性通过user_screens与Screen中的多个关系相关。这是错误:

“InvalidRequestError:一个或多个映射器无法编译。异常可能在hasattr()调用中被抑制。消息是:一个或多个映射器无法编译。异常可能在hasattr()调用中被抑制。消息是:类'zeppelinlib.screen.ScreenTest.Screen'未映射“

这些是类:

class Screen(rdb.Model):
    """Set up screens table in the database"""
    rdb.metadata(metadata)
    rdb.tablename("screens")

    id = Column("id", Integer, primary_key=True)
    title = Column("title", String(100))
    ip = Column("ip", String(20))
        ...

user_screens = Table(
            "user_screens",
            metadata,
            Column("user_id", Integer, ForeignKey("users.id")),
            Column("screen_id", Integer, ForeignKey("screens.id"))
        )

class User(rdb.Model):
    """Set up users table in the database"""
    rdb.metadata(metadata)
    rdb.tablename("users")

    id = Column("id", Integer, primary_key=True)
    name = Column("name", String(50))
    ...

    group = 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")

我可能没有向用户添加新关系,因为我真的不知道问题是什么......

谢谢你!

1 个答案:

答案 0 :(得分:0)

尝试通过primaryjoin关键字参数指定主要联接(不知道哪一个)relationship。有时(在复杂的关系图中)SQLAlchemy很难弄清楚它应该如何发生。为我工作不止一次,虽然在0.5.x。