当我尝试创建一个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")
我可能没有向用户添加新关系,因为我真的不知道问题是什么......
谢谢你!
答案 0 :(得分:0)
尝试通过primaryjoin
关键字参数指定主要联接(不知道哪一个)relationship
。有时(在复杂的关系图中)SQLAlchemy很难弄清楚它应该如何发生。为我工作不止一次,虽然在0.5.x。