문제 설명
sqlalchemy.exc.IntegrityError: (sqlite3.IntegrityError) NOT NULL 제약 조건 실패: user.words (sqlalchemy.exc.IntegrityError: (sqlite3.IntegrityError) NOT NULL constraint failed: user.words)
같은 제목의 다른 게시물을 보았지만 문제가 해결되지 않았습니다. 위 제목의 오류 메시지는 내가 얻는 것입니다. 저는 간단한 데이터베이스와 데이터베이스 생성자를 만들었습니다. 테스트를 위해 "hello"라는 단어를 추가하려고 합니다. "단어" 열에 클래스 사용자에서. 하지만 이 오류가 계속 발생합니다. 이미 클래스 열에 자동 증가를 넣으려고 시도했지만 결국 다른 오류가 발생했습니다. 무슨 일이야? 아래 코드를 참조하십시오. 파이썬과 플라스크.
from flask import Flask, request, redirect, url_for, render_template
from datetime import datetime
from flask_sqlalchemy import SQLAlchemy
import sqlite3
app = Flask(name)
app.config["SQLALCHEMY_DATABASE URI"] = 'sqlite:///test.db'
db = SQLAlchemy(app)
class User(db.Model):
tablename = 'user'
words = db.Column(db.String(200), primary_key=True)
def __init__(self, thewords):
self.thewords = thewords
db.create_all()
db.session.commit()
texts = "hello"
textstuffent = User(texts)
db.session.add(textstuffent)
db.session.commit()
results = User.query.all()
print(results)
@app.route('/', methods = ['POST', 'GET'])
def hello():
return render_template('Textarea.html')
app.run(debug=True)
</code></pre>
참조 솔루션
방법 1:
For anyone who visits this page in the future, I've found what was wrong. I did not reference "words" as "self.words". My code now works and I am relieved to finally continue coding so that some other bug can confound me later down the road. Please see below. You can see the difference in code in the User class. I used query.all() to prove that data has made it into the database.
from flask import Flask, request, redirect, url_for, render_template
from datetime import datetime
from flask_sqlalchemy import SQLAlchemy
import sqlite3
app = Flask(__name__)
app.config["SQLALCHEMY_DATABASE URI"] = 'sqlite:///test.db'
db = SQLAlchemy(app)
class User(db.Model):
words = db.Column(db.String(200), primary_key=True, nullable=False)
def __init__(self, thewords):
self.words = thewords
db.create_all()
db.session.commit()
texts = "hello"
textstuffent = User(texts)
db.session.add(textstuffent)
db.session.commit()
print(User.query.all())
@app.route('/', methods = ['POST', 'GET'])
def hello():
return render_template('Textarea.html')
app.run(debug=True)
(by Get Over Here、Get Over Here)
참조 문서