插入 SQLite DB 时“提供的绑定数量不正确”

问题描述 投票:0回答:1

我试图检查一行是否存在并包含一些预期值,但我不断收到此错误:

提供的绑定数量不正确。当前语句使用 1, 并提供 5 个。

这是错误的最小再现:

import sqlite3

db_file = "test.db"
con = sqlite3.connect(db_file)

cur = con.cursor()
cur.execute('DROP TABLE IF EXISTS image')
cur.execute('''
    CREATE TABLE image(
        id INTEGER PRIMARY KEY,
        listing_id TEXT NOT NULL,
        url TEXT NOT NULL,
        image BLOB NOT NULL
    )''')
res = con.execute('''
    SELECT listing_id, url FROM image WHERE listing_id=?
    ''', 'id123')

结果:

---------------------------------------------------------------------------
ProgrammingError                          Traceback (most recent call last)
Cell In[1], line 15
      7 cur.execute('DROP TABLE IF EXISTS image')
      8 cur.execute('''
      9     CREATE TABLE image(
     10         id INTEGER PRIMARY KEY,
   (...)
     13         image BLOB NOT NULL
     14     )''')
---> 15 res = con.execute('''
     16     SELECT listing_id, url FROM image WHERE listing_id=?
     17     ''', 'id123')

ProgrammingError: Incorrect number of bindings supplied. The current statement uses 1, and there are 5 supplied.

我在这里做错了什么?

python sqlite
1个回答
1
投票

您收到的错误是因为当

'id123'
方法需要其参数的元组时,您正在传递字符串
execute()
。当您直接提供字符串时,它会将字符串中的每个字符视为单独的参数,从而导致绑定数量错误。

以下是修复错误的方法:

res = con.execute('''
    SELECT listing_id, url FROM image WHERE listing_id=?
    ''', ('id123',))
© www.soinside.com 2019 - 2024. All rights reserved.