2010-05-13 3 views
1
отношения

Уважаемый всем, я вслед за многие ко многим описано на http://www.sqlalchemy.org/docs/mappers.html#many-to-manySQLAlchemy: многие ко многим ошибки

#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' 

Что я делаю неправильно?

EDIT: Я на MyISAM, который не поддерживает forigen ключи

ответ

2

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

sess.query(UnifiedProduct).join(UnifiedProduct.unifiedGroups).distinct()[:10] 
Смежные вопросы