У меня есть некоторые проблемы с настройкой коллекции словарей в SQLAlchemy Python:
Я использую декларативное определение таблиц. У меня есть 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
работает, но это не очень хорошо для меня).
Большое спасибо