簡體   English   中英

在燒瓶中將數據輸入數據庫時​​出錯(sqlite3.IntegrityError)

[英]Error when entering data into database in flask (sqlite3.IntegrityError)

嘗試制作一個基本的測驗應用程序,當嘗試將數據插入數據庫時​​,它給了我錯誤

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

我打開了你的數據庫在此處輸入圖片說明

在此處輸入圖片說明

並且可以看到所有表列都設置了主鍵,嘗試從正確和不正確的args中刪除primary_key=False ,並且可以從id中刪除autoincrement=True ,因為使用arg primary_key=True自動設置auto increment

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM