创建表时,我已使用auto_increment将一列声明为主键。
但是当我在行中插入一行时,它希望我要么添加主键但先声明它,要么当我不输入主键时,它说我没有给它足够的参数。
[我去过的几乎每个站点都告诉我,我不必将主键添加到我的插入语句中,因为它会自动增加自身,但是似乎并没有这样做。
c.execute(“”“如果不存在,则创建表class(
student_ID INTEGER AUTO_INCREMENT PRIMARY KEY,
first TEXT,
last TEXT,
mark INTEGER,
target_grade TEXT,
percentage INTEGER
)“”“)
稍后...
c.execute(“ INSERT INTO class VALUES(?,?,?,?,?)”,(first,last,mark,target_grade,percentage,))
sqlite3.OperationalError:表类具有6列,但提供了5个值
或
NameError:未定义名称'ID'
您必须在INSERT
语句中包括将接收值的列的名称(当然不包括主键列):
c.execute("INSERT INTO class (first, last, mark, target_grade, percentage) VALUES (?,?,?,?,?)",(first,last,mark,target_grade,percentage,))