2014-02-21 3 views
2

я следующие таблицы конфигурации:имя таблицы задано несколько раз

class User(Base): 
    __tablename__ = "user" 

    id = Column(Integer, primary_key=True) 
    name = Column(String) 


class Gadget(Base): 
    __tablename__ = "gadget" 

    id = Column(Integer, primary_key=True) 
    brand = Column(String) 


class UserGadget(Base): 
    __tablename__ = "user_gadget" 

    user_id = Column(Integer, ForeignKey('user.id'), primary_key=True) 
    gadget_id = Column(Integer, ForeignKey('gadget.id'), primary_key=True) 

    user = relationship("User", backref=backref('userGadgets', order_by=user_id)) 
    gadget = relationship("Gadget", backref=backref('userGadgets', order_by=gadget_id)) 


class GadgetComponent(Base): 
    __tablename__ = "gadget_component" 

    id = Column(String, primary_key=True) 
    gadget_id = Column(Integer,ForeignKey('gadget.id')) 
    component_maker = Column(String) 

    host = relationship("Gadget", backref=backref('components', order_by=id)) 


class ComponentUsingMetal(Base): 
    __tablename__ = "component_metal" 

    id = Column(Integer, primary_key=True)  
    component_id = Column(Integer, ForeignKey('GadgetComponent.id')) 
    metal = Column(String) 

    component = relationship("GadgetComponent", backref=backref('gadgetComponentMetals', order_by=id)) 

Сделав следующий запрос: session.query(User).join("userGadgets", "gadget", "components","gadgetComponentMetals").filter(ComponentUsingMetal.metal == 'iron'), component_metal привязывается к запросу дважды давая ошибка «имя таблицы component_metal задано несколько раз ».
Любая идея, что я делаю неправильно?

ответ

0

Я проследил проблему до следующей строки в файле selectable.py: froms = [f for f in froms, если f не в toremove] Эта строка удаляет таблицы, которые уже покрыты соединениями, так что предложение FROM doesn ' t имеют одну и ту же таблицу, указанную более одного раза. Линия не удаляла component_metal, хотя это означало, что у меня было два разных объекта Table для одной и той же таблицы db. И затем я заметил, что импорт для класса component_metal, ComponentUsingMetal, выглядел иначе. Остальные импортные товары выглядели так:

from myschema import GadgetComponent 
from myschema import Gadget 
from python.myschema ComponentUsingMetal 

Как только фиксированный импорт проблемы ушел.

Смежные вопросы