Sqlalchemy: Многие Многим ошибка отношений

Дорогой все, я следую за Многими многим отношения, описанные на 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 ключи

1
задан 1001010101 13 May 2010 в 07:12
поделиться

1 ответ

Достаточно наличия определений внешнего ключа в схеме SQLAlchemy, они не являются обязательными в реальной таблице. Между вашими моделями нет прямого внешнего отношения, поэтому SQLAlchemy не может их найти. Укажите отношение для присоединения явно:

sess.query(UnifiedProduct).join(UnifiedProduct.unifiedGroups).distinct()[:10]
2
ответ дан 3 September 2019 в 00:36
поделиться
Другие вопросы по тегам:

Похожие вопросы: