0
當我嘗試創建屏幕對象時,出現了奇怪的錯誤。在它沒有任何問題的情況下工作之前,我在向User類添加新屬性時遇到了此錯誤。這個屬性通過user_screens與屏幕之間的關係是多對多的關係。這是錯誤:初始化對象的問題
「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")
我可能不會添加新的關係到用戶,因爲我真的不知道知道問題是什麼...
謝謝!
什麼是rdb.Model?它是由declarative_base()調用的結果嗎? – 2010-11-02 21:26:00
rdb.Model是建立在SQLAlchemy上的庫。該庫與GROk,CMS所使用的相關。這個問題可能會由於那個圖書館而出現,我不確定,但它無論如何都很奇怪! – bribon 2010-11-02 22:15:10
我相信你的問題與你正在使用的CMS庫有關。您給出的示例非常接近SQLAlchemy ORM多對多教程,該教程適用於我。我在我的機器上試過你的代碼,換出了SQLAlchemy的聲明的GROK,它工作正常。 http://www.sqlalchemy.org/docs/orm/tutorial.html#building-a-many-to-many-relationship – 2010-11-02 22:33:50