尝试制作一个基本的测验应用程序,尝试将数据插入数据库时会出现错误
sqlalchemy.exc.IntegrityError: (sqlite3.IntegrityError) NOT NULL constraint failed: results.id
[SQL: INSERT INTO results (correct, incorrect) VALUES (?, ?)]
[parameters: (0, 1)]
因此它正在识别我尝试输入的数据,而且格式似乎正确,但由于该部分代码未提及ID(我在项目的其他位置也做了类似的操作),因此我不理解该错误而且效果很好)
class Results(db.Model):
id = db.Column(db.Integer, primary_key=True, autoincrement=True)
correct = db.Column(db.Integer, primary_key=False)
incorrect = db.Column(db.Integer, primary_key=False)
def __repr__(self):
return 'Result ' + str(self.id)
@app.route('/answers', methods=['GET', 'POST'])
def answers():
correct = Results.correct
incorrect = Results.incorrect
if request.method == 'POST':
submitted_answer = request.form['answer']
if submitted_answer == Question.option1:
correct = int(0)
incorrect = int(0)
correct += int(1)
new_result = Results(correct=correct, incorrect=incorrect)
db.session.add(new_result)
db.session.commit()
else:
correct = int(0)
incorrect = 0
incorrect += int(1)
new_result = Results(correct=correct, incorrect=incorrect)
db.session.add(new_result)
db.session.commit()
return redirect('/answers')
all_questions = Question.query.order_by().all()
all_results = Results.query.order_by().all()
return render_template('answers.html', questions=all_questions, all_results=all_results)
这是有问题的代码,很抱歉,如果它很难见证,对此是新手,并且不确定所有最佳实践,谢谢
完整的应用程序,在下面链接
答案 0 :(得分:0)
如果要将字段指定为可为空,则需要执行以下操作
class Results(db.Model):
id = db.Column(db.Integer, primary_key=True, autoincrement=True)
correct = db.Column(db.Integer, nullable=True)
incorrect = db.Column(db.Integer, nullable=True)
......