我有一些问题在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