我有一些問題在Python的SQLAlchemy的設立字典集合:SQLAlchemy的 - MappedCollection問題
我使用表的聲明性定義。我有Item
表與1:N關係表Record
表。我建立的關係用下面的代碼:
_Base = declarative_base()
class Record(_Base):
__tablename__ = 'records'
item_id = Column(String(M_ITEM_ID), ForeignKey('items.id'))
id = Column(String(M_RECORD_ID), primary_key=True)
uri = Column(String(M_RECORD_URI))
name = Column(String(M_RECORD_NAME))
class Item(_Base):
__tablename__ = 'items'
id = Column(String(M_ITEM_ID), primary_key=True)
records = relation(Record, collection_class=column_mapped_collection(Record.name), backref='item')
現在我想用Item
S和Record
s到工作。讓我們來創建一些對象:
i1 = Item(id='id1')
r = Record(id='mujrecord')
,現在我想對這些對象的使用下面的代碼相關聯:
i1.records['source_wav'] = r
但Record r
沒有固定的name
屬性(外鍵)。有沒有解決方案如何自動確保這一點? (我知道在Record
創作過程中設置外鍵,但對我來說聽起來不太好)。
非常感謝
可能不是。 backref是sqlalchemy將添加到關係的另一端(Record類)的屬性的名稱,以引用返回包含前向引用的對象(Item實例)。所以'item'是有道理的 - 在honzas的例子中,r.item產生Item實例。 – 2009-05-19 20:03:52