sqlite3.OperationalError: table book 有 6 列,但提供了 5 个值

Ego*_*gon 4 python sqlite

得到一个错误:

Traceback (most recent call last):
  File "frontend.py", line 2, in <module>
    import backend
  File "/Users/egonsaks/Desktop/Demo/backend.py", line 28, in <module>
    insert("The sea", "John Tablet", 1918, 987654331)
  File "/Users/egonsaks/Desktop/Demo/backend.py", line 15, in insert
    cur.execute("INSERT INTO book VALUES (NULL,?,?,?,?)",(title, author, year, isbn))
  sqlite3.OperationalError: table book has 6 columns but 5 values were supplied
Run Code Online (Sandbox Code Playgroud)

在数据库的表中插入数据时,我想要带有主键整数的 id 列。我根据教程检查了我的代码,并在堆栈溢出中四处寻找类似问题的解决方案,但没有找到解决方案。测试了一些东西,比如删除一个空值,但它说提供了 6 列和 4 个值。

代码在这里:

import sqlite3

def connect():
    conn = sqlite3.connect("books.db")
    cur = conn.cursor()
    cur.execute("CREATE TABLE IF NOT EXISTS book (id INTEGER PRIMARY KEY, 
    title text, author text, year integer, isbn integer)") 
    conn.commit() 
    conn.close()

def insert(title, author, year, isbn):
    conn = sqlite3.connect("books.db") 
    cur = conn.cursor()
    cur.execute("INSERT INTO book VALUES (NULL,?,?,?,?)",(title, author, year, isbn))
    conn.commit()
    conn.close()
Run Code Online (Sandbox Code Playgroud)

aws*_*ice 5

请在插入时指定您的列,这很重要,是的,不要NULLid列包含 a或任何值!

cur.execute("INSERT INTO book(title, author, year, isbn) VALUES (?,?,?,?)",
                             (title, author, year, isbn))
Run Code Online (Sandbox Code Playgroud)

  • “INTEGER PRIMARY KEY”列的空值使 sqlite 自动为该列分配一个值。 (2认同)