【问题标题】:Error: table book has 4 columns but 5 values were supplied错误:表格簿有 4 列,但提供了 5 个值
【发布时间】:2018-06-14 14:20:35
【问题描述】:

得到错误:

"插入 cur.execute("INSERT INTO book VALUES (NULL,?,?,?,?)" ,(title,author,year,isbn)) sqlite3.OperationalError: table book 有 4 列,但提供了 5 个值"

在代码下方运行时,我想在数据库的表中插入数据时使用主键整数标识列。

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()

请帮忙。

【问题讨论】:

    标签: python


    【解决方案1】:

    为什么你把 NULL 放在 book VALUES (NULL,?,?,?,?) 中?尝试不使用NULL

    cur.execute("INSERT INTO book VALUES (?,?,?,?)" ,(title,author,year,isbn))
    

    【讨论】:

    • 谢谢! Zimdero,现在我遇到了这个错误——在 insert cur.execute("INSERT INTO book VALUES (?,?,?,?)" ,(title,author,year,isbn,)) sqlite3.IntegrityError: datatype mismatch
    • 我正在尝试添加这个- insert("def","abc",2018,182829191)
    • 你在那个元组中有一个额外的尾随逗号。这是故意的吗?无论哪种方式,我都会检查您传入的参数。例如,ISBN 真的是一个整数吗?整数只保存2147483647 的最大值
    • Zimdero,对不起,如果我听起来很愚蠢,我还在学习 python..这是我定义参数类型的地方...cur.execute("CREATE TABLE IF NOT EXISTS book (id INTEGER PRIMARY KEY, title text, author text, year integer, isbn integer)")...这些是我在插入数据时传入函数的参数...insert("def","abc", 2018,182829)..根据这个 isbn 是一个整数
    • @zimdero ..它现在正在工作...使用主键和 NULL 值..我所要做的就是更改表的名称并创建一个新表...可能是已经存在的条目是问题..谢谢!为您的时间和精力..欣赏它..
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多