Проблема заключается в попытке получить объект с отношениями из базы данных с помощью SQLAlchemy на Pyramid. В основном я хочу создать объекты, которые мне нужно получить из базы данных, чтобы заполнить данные, необходимые для веб-страницы.SQLAlchemy AttributeError: объект «Query» не имеет атрибута «_sa_instance_state» при извлечении из базы данных
Когда я пытаюсь получить доступ к url / poll/{id} (используя действительный идентификатор опроса, например:/poll/1), чтобы получить страницу, я получаю эту ошибку: AttributeError: объект «Query» не имеет атрибута '_sa_instance_state. Какая ошибка?
Это соответствующая часть модели:
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
Это одна является частью кода, который дает мне неприятности. Отладчик указывает от второй до последней строки (объект Option).
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}
Заранее благодарен!
Я просто изображал .one() или первой(), но я рад за тщательное разъяснение. Кажется гораздо лучше использовать backref. – ffuentes