首页 > 解决方案 > sqlite3.OperationalError:3 列的 1 个值

问题描述

我正在尝试使用 sqlite 数据库插入和提取数据,但我一直遇到此错误:

Traceback (most recent call last):
  File "Database_Section\Dsite.py", line 14, in <module>
    insert("Cup", 4, 5)
  File "Database_Section\Dsite.py", line 10, in insert
    cur.execute(cur.execute("INSERT INTO store(item, quantity, price) VALUES ('?,?,?')", ('item','quantity','price')))
sqlite3.OperationalError: 1 values for 3 columns`enter code here

这是我的代码:

import sqlite3
conn = sqlite3.connect('lite.db')
cur = conn.cursor()
cur.execute('CREATE TABLE IF NOT EXISTS store(item TEXT, quantity INTEGER, price REAL)')
conn.commit()
     
def insert(item,quantity,price):
    conn = sqlite3.connect('lite.db')
    cur = conn.cursor()
    cur.execute(cur.execute("INSERT INTO store(item, quantity, price) VALUES ('?,?,?')", ('item','quantity','price')))
    conn.commit()
    conn.close()
 impo
insert("Cup", 4, 5)     
     
def view():
    conn = sqlite3.connect('lite.db')
    cur = conn.cursor()
    cur.execute("SELECT * FROM store")
    rows = cur.fetchall()
    conn.close()
    return rows
     
print(view())

标签: python-3.xdatabasesqlite

解决方案


"INSERT INTO store(item, quantity, price) VALUES ('?,?,?')"

这试图将文字字符串插入'?,?,?'表中,但由于它是单个值并且有 3 列而失败(如错误所述)。

您应该删除占位符周围的引号:

"INSERT INTO store(item, quantity, price) VALUES (?,?,?)"

推荐阅读