SQLAlchemy AttributeError: 'Query' objet n'a pas d'attribut "_sa_instance_state' lors de la récupération de la base de données

Le problème est d'essayer de récupérer un objet avec des relations de la base de données à l'aide de SQLAlchemy sur la Pyramide. Ce que je veux, fondamentalement, est de créer les objets que j'ai besoin de récupérer à partir de la base de données pour compléter les données nécessaires à une page web.

Lorsque j'essaie d'accéder à l'url /sondage/{id} (à l'aide d'un valide poll id, par exemple: /sondage/1) pour obtenir la page, j'obtiens cette erreur: AttributeError: 'Query' objet n'a pas d'attribut "_sa_instance_state'. Quelle est l'erreur?

C'est la partie pertinente du modèle:

class Question(Base):
    __tablename__ = 'question'
    id = Column(Integer, primary_key=True)
    text = Column(String(250))
    type_id = Column(Integer, ForeignKey('type.id'))
    type = relationship(Type)
    poll_id = Column(Integer, ForeignKey('poll.id'))
    poll = relationship(Poll)

    def __init__(self, text, type, poll):
        self.text = text
        self.type = type
        self.poll = poll


class Option(Base):
    __tablename__ = 'option'
    id = Column(Integer, primary_key=True)
    text = Column(String(250))
    question_id =  Column(Integer, ForeignKey('question.id'))
    question = relationship(Question)

    def __init__(self, text, question):
        self.text = text
        self.question = question

C'est la partie du code qui me donne de la difficulté. Le débogueur points lors de la deuxième à la dernière ligne (l'Option de l'objet).

if request.matchdict['id'] != None:
            pinst = session.query(Poll).get(request.matchdict['id'])
            typeq = session.query(Type).first()
            qinst = session.query(Question).filter_by(poll=pinst)
            lopt = session.query(Option).filter_by(question=qinst)
            return {'question':qinst, 'arroptions':lopt, 'type':typeq}

Merci d'avance!

InformationsquelleAutor ffuentes | 2017-02-12