При добавлении одного коммита - db.session.add(new_professor)
программа выполняется правильно, при добавлении второго коммита db.session.add(prof_hindex)
это ошибка:
sqlalchemy.exc.IntegrityError: (sqlite3.IntegrityError) NOT NULL constraint failed: professors.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")
Не знаете, почему приведенные выше параметры показывают нуль при добавлении двух элементов в таблицу? Как бы вы добавили несколько элементов в класс?
Вы немного перепутали номенклатуру. В вашем случае фраза «Я хочу добавить несколько элементов» означает «Я хочу добавить несколько строк профессора». Но, глядя на ваш код, может показаться, что вы на самом деле спрашиваете «как добавить несколько атрибутов при добавлении одной строки профессора».
Чтобы добавить одного профессора с несколькими атрибутами:
...
# 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
.
Где вы указываете I'd? Если вы вставите одно значение без, если оно может заполнить, но не два