代码之家  ›  专栏  ›  技术社区  ›  cclloyd

SQLite with Python“表有X列,但提供了Y”

  •  0
  • cclloyd  · 技术社区  · 8 年前

    c.execute("CREATE TABLE IF NOT EXISTS simpletable (id integer PRIMARY KEY, post_body text, post_id text, comment_id text, url text);")
    command = "INSERT OR IGNORE INTO simpletable VALUES ('%s', '%s', '%s', '%s')" % (comments[-1].post_body, comments[-1].post_id, comments[-1].comment_id, 
    comments[-1].url)
    c.execute(command)
    c.commit()
    

    但是当我执行它的时候,我得到了一个错误

    sqlite3。操作错误:表simpletable有5列,但提供了4个值

    id 钥匙

    3 回复  |  直到 8 年前
        1
  •  3
  •   sticky bit    6 年前

    如果未指定目标列 VALUES

    INSERT
     OR IGNORE INTO simpletable
                    (text,
                     post_id,
                     comment_id,
                     text)
                    VALUES ('%s',
                            '%s',
                            '%s',
                            '%s');
    

    在任何情况下,都建议指定目标列。如果出于任何原因,表中列的顺序发生更改,则查询不会中断。

        2
  •  2
  •   Ronny K    7 年前

    在Python3.6中,我执行了如下所示的操作,成功地插入了数据。

    我曾经 None Null 找不到。

    conn.execute("INSERT INTO CAMPAIGNS VALUES (?, ?, ?, ?)", (None, campaign_name, campaign_username, campaign_password))
    

    ID结构如下所示。

    ID INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL
    
        3
  •  1
  •   rsb55    8 年前

    前任:

    (案文, 邮政编码, (文本)

    如果希望id列自动递增,请确保在dbms上添加Identity属性或类似的自动递增。

    如果不存在simpletable(id integer主键标识(1,1),则创建表,

    请记住,您的脚本不准备更改表结构,只准备创建。

        4
  •  0
  •   Sven Eberth Mayank Agarwal    4 年前

    如果编写的代码正确,请删除SQL文件( name.db )并在某个时候再次运行代码,以解决问题。

    cursor.execute('''CREATE TABLE IF NOT EXISTS food(name TEXT , price TEXT)''')
    
    cursor.execute('INSERT INTO food VALUES ("burger" , "20")')
    
    connection.commit()
    

    您会看到这样的错误:

    表有1列,但提供了2个值