添加一個提交時 -db.session.add(new_professor)程式正確執行,添加第二個提交時db.session.add(prof_hindex)這是錯誤:
sqlalchemy.exc.IntegrityError: (sqlite3.IntegrityError) NOT NULL 約束失敗:professor.name [SQL: INSERT INTO Professors (name, hindex, date_created) VALUES (?, ?, ?)]
[parameters: (None, 25, ' 2022-03-20 21:14:39.624208')]
似乎一旦我嘗試將兩個專案提交到表中,name = db.Column(db.String(100), nullable=False)就為空。
資料庫模型
class Professors(db.Model):
id = db.Column(db.Integer, primary_key=True)
name = db.Column(db.String(100), nullable=False)
hindex = db.Column(db.Integer)
date_created = db.Column(db.DateTime, default=datetime.utcnow)
# Return a string when adding to DB
def __repr__(self):
return f"Professors('{self.name}','{self.hindex}')"
發布路線
name = request.form.get("name")
if not name:
return render_template("failure.html")
# Google Scholar API
search_query = scholarly.search_author(name)
author = next(search_query)
indices_list = (scholarly.fill(author, sections=['indices']))
hindex_int = indices_list['hindex']
# Passed variables to DB
new_professor = Professors(name=name)
prof_hindex = Professors(hindex=hindex_int)
db.session.add(new_professor)
db.session.add(prof_hindex)
db.session.commit()
return redirect("/registrants")
不確定為什么在表格中添加兩項時,上面的引數顯示為 null?您將如何為每個班級添加多個專案?
uj5u.com熱心網友回復:
你有一些命名混淆。在您的情況下,說“我想添加多個專案”意味著“我想添加多個教授行”。但是查看您的代碼,您似乎實際上是在問“如何在添加單個教授行時添加多個屬性”。
要添加具有多個屬性的單個教授:
...
# Passed variables to DB
new_professor = Professors(
name=name,
hindex=hindex_int)
db.session.add(new_professor)
db.session.commit()
return redirect("/registrants")
添加多個教授(行):
professorA = Professors(
name=nameA,
hindex=hindex_intA)
professorB = Professors(
name=nameB,
hindex=hindex_intB)
db.session.add(professorA)
db.session.add(professorB)
db.session.commit()
return redirect("/registrants")
您遇到錯誤,因為您試圖添加第二個教授(行)prof_hindex = Professors(hindex=hindex_int)但您沒有提供name屬性,這是一個必填欄位,因為nullable=False.
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/446884.html
標籤:Python sqlite 烧瓶 sqlalchemy 烧瓶-sqlalchemy
