【问题标题】:Error when entering data into database in flask (sqlite3.IntegrityError)在烧瓶中将数据输入数据库时​​出错(sqlite3.IntegrityError)
【发布时间】:2020-02-05 07:14:12
【问题描述】:

尝试制作一个基本的测验应用程序,当尝试将数据插入数据库时​​,它给了我错误

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)

这是有问题的代码,很抱歉,如果看到它很痛苦,我是新手,不能完全确定所有最佳实践,谢谢

下面链接的完整应用程序

https://github.com/turdies/FlaskQuiz

【问题讨论】:

    标签: python flask flask-sqlalchemy


    【解决方案1】:

    我已经打开了你的数据库

    你可以看到所有的表列都设置了主键,尝试从正确和不正确的args中删除primary_key=False,你可以从id中删除autoincrement=True,因为使用arg primary_key=True自动设置自动增量

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-06-07
      • 2019-08-21
      • 2016-09-20
      • 2021-09-30
      • 1970-01-01
      • 1970-01-01
      • 2021-09-04
      • 1970-01-01
      相关资源
      最近更新 更多