我遇到問題。我不得不這樣做查詢:OperationalError:(OperationalError)no such column
@app.route('/api/subscriptions/<string:id>', methods=('DELETE',))
@decorators.login_required
def delete_subscription(id):
dbsession = DBSession()
session = Session()
favorit = (dbsession.query(StudentsFavorites)
.filter(Exams.number == str(id))
.filter(StudentsFavorites.exam_id)
.filter(Students.id == StudentsFavorites.student_id)
.filter(Students.id == str(session.get_user_id()))
.delete() )
dbsession.flush()
return jsonify(error=False)
但是,當我做到這一點查詢,我得到這個異常:
OperationalError: (OperationalError) no such column: exams.number u'DELETE FROM students_favorites WHERE exams.number = ? AND students_favorites.exam_id AND students.id = students_favorites.student_id AND students.id = ?' ('123123123', 'a24213')
的表非常大,有很多的信息,所以我不能發佈所有的。但這個查詢工作:
@app.route('/api/subscriptions/<string:id>', methods=('PUT',))
@decorators.login_required
def add_subscription(id):
dbsession = DBSession()
session = Session()
examID = (dbsession.query(Exams.id)
.filter(Exams.number == id).first()
)
favorit=StudentsFavorites(student_id=session.get_user_id(), exam_id=examID.id)
dbsession.add(favorit)
dbsession.flush()
return jsonify(error=False)
短視圖表:
table: Exams
rows: id, number (number is the id i put into the function)
table: StudentsFavorites
rows: student_id, exams_id
table: Students
rows: id
我真的不明白,他爲什麼不找數行中的例外。
編輯:
數據庫StudentsFavorites:
class StudentsFavorites(Base):
"""N:M resolve model for the exams to the semester.
"""
__tablename__ = "students_favorites"
student_id = Column(Unicode(255), ForeignKey("students.id"), primary_key=True, autoincrement=False)
exam_id = Column(Integer, ForeignKey("exams.id"), primary_key=True, autoincrement=False)
created_at = Column(DateTime, nullable = False, default = datetime.now)
student = relationship("Students", uselist = False, lazy="joined")
exam = relationship("Exams", uselist=False, lazy="joined")
像這樣的事情?我嘗試這樣做:
(dbsession.query(StudentsFavorites)
.filter(StudentsFavorites.exam.id == str(id))
.filter(StudentsFavorites.student.id == str(session.get_user_id()))
.delete()
)
但得到的錯誤,該ID沒有在考試中存在/學生
非常感謝,我也嘗試過這一點,但它沒有工作:(任何其他的想法?我稍後再嘗試發佈tablestructure,但必須把它縮小 –
什麼,你是錯誤從連接開始?還有,你在這裏有多對多的關係,所以如果你檢查第二個鏈接的查詢,這應該很容易放在一起(假設你的關係放在一起)。 – AlexLordThorsen
如果我像上面的代碼那樣編輯它,我得到了同樣的錯誤。我編輯了第一篇文章並導入了StudentFavorits表。作爲考試表,我認爲這有助於多一點。 –