Дорогой все, я следую за Многими многим отношения, описанные на http://www.sqlalchemy.org/docs/mappers.html#many-to-many
#This is actually a VIEW
tb_mapping_uGroups_uProducts = Table( 'mapping_uGroups_uProducts', metadata,
Column('upID', Integer, ForeignKey('uProductsInfo.upID')),
Column('ugID', Integer, ForeignKey('uGroupsInfo.ugID'))
)
tb_uProducts = Table( 'uProductsInfo', metadata,
Column('upID', Integer, primary_key=True)
)
mapper( UnifiedProduct, tb_uProducts)
tb_uGroupsInfo = Table( 'uGroupsInfo', metadata,
Column('ugID', Integer, primary_key=True)
)
mapper( UnifiedGroup, tb_uGroupsInfo, properties={
'unifiedProducts': relation(UnifiedProduct, secondary=tb_mapping_uGroups_uProducts, backref="unifiedGroups")
})
где отношения между uProduct и uGroup являются N:M.
Когда я выполняю следующее
sess.query(UnifiedProduct).join(UnifiedGroup).distinct()[:10]
Я получаю ошибку:
sqlalchemy.exc.ArgumentError: Can't find any foreign key relationships between 'uProductsInfo' and 'uGroupsInfo'
Что я делаю неправильно?
Править: Я нахожусь на MyISAM, который не поддерживает forigen ключи
Достаточно наличия определений внешнего ключа в схеме SQLAlchemy, они не являются обязательными в реальной таблице. Между вашими моделями нет прямого внешнего отношения, поэтому SQLAlchemy не может их найти. Укажите отношение для присоединения явно:
sess.query(UnifiedProduct).join(UnifiedProduct.unifiedGroups).distinct()[:10]