【问题标题】:Sqlite3 with PythonSqlite3 与 Python
【发布时间】:2020-06-27 16:03:56
【问题描述】:

我的代码:

cursor.execute("select * from PRODUCT where product_id in (?)", (ids,))
print(cursor.fetchall())

其中ids 是整数值的元组,例如(2,4)product_id 也是整数值。

我得到的错误是:

文件“c:/Users/deboparna/Desktop/college/Sem4/programming language/project/db.py”,第 32 行,在 fetchProducts cursor.execute("select * from PRODUCT where product_id in (?)", (ids,)) sqlite3.InterfaceError:错误绑定参数 0 - 可能是不受支持的类型。

【问题讨论】:

标签: python sqlite


【解决方案1】:

每个 ID 都需要占位符。
您还应该将ids 用作元组,而不是使其成为元组的元组。

placeholders = ",".join("?"*len(ids))
qry = "select * from product where product_id in ({})".format(placeholders)
cursor.execute(qry,ids)

【讨论】:

  • 谢谢!有效。但我仍然不清楚它为什么起作用。占位符只会给出一串逗号分隔的问号。我们使用格式将其放入查询中。这和我做的有什么不同。我不是在做同样的事情,而是把'?直接而不是使其成为变量?
  • 是的,但是当你需要两个问号时,你只打了一个问号。当您的 ids 变量可能发生变化时,任何动态生成占位符的方式都更容易:)
猜你喜欢
  • 2013-06-14
  • 1970-01-01
  • 2010-10-30
  • 2013-12-06
  • 1970-01-01
  • 2017-07-18
  • 1970-01-01
  • 1970-01-01
  • 2023-03-19
相关资源
最近更新 更多