python - 不能在 sqlite3 中使用 2 位数字
问题描述
此代码非常适用于一位数字,但是当使用 2 位数字时,会显示以下错误...有人可以帮我解决这个问题吗?:)
代码
import sqlite3
connie = sqlite3.connect('pb.db')
c = connie.cursor()
test = 11
real = (str(test))
c.execute("""
SELECT result FROM results
INNER JOIN users ON users.id = results.user_id
WHERE users.id = (?)
""",real)
result_list = c.fetchall()
for result in result_list:
print(result[0])
connie.close()
错误
"C:\Users\britsge\OneDrive - Iona College\Year 11\DSO\PowerballSite\venv\Scripts\python.exe" "C:/Users/britsge/OneDrive - Iona College/Year 11/DSO/PowerballSite/db-select-ingredient-list.py"
Traceback (most recent call last):
File "C:/Users/britsge/OneDrive - Iona College/Year 11/DSO/PowerballSite/db-select-ingredient-list.py", line 11, in <module>
""",real)
sqlite3.ProgrammingError: Incorrect number of bindings supplied. The current statement uses 1, and there are 2 supplied.
解决方案
.execute() 的第二个参数需要是一个序列。例如,您可以传递一个列表或一个元组。下面是如何使它成为一个元组:
例子:
cursor.execute('INSERT INTO images VALUES(?)', (img,))
在你的情况下:只需要两个参数。
它将迭代“数组”对象并匹配?在 sql-string 中。(进行完整性检查以避免 sql 注入)
将 , real) 更改为 , (real,))
cursor.execute(sql,数组)
你的:
c.execute("""SELECT result FROM results INNER JOIN users ON users.id = results.user_id WHERE users.id = (?) """,real)
将其更改为:
c.execute("SELECT result FROM results INNER JOIN users ON users.id = results.user_id WHERE users.id = (?) ", change ,(real,))
推荐阅读
- oracle - 确定是春天还是秋天,如果夏令时调整时间
- python - “分数”类型与分数一起出现在我的打印列表中
- opensuse - 出于审计目的,需要提供通过 zypper patch 命令应用的所有补丁。如何列出最近 3 个月内安装的所有补丁
- c++ - 为什么我不能从函数返回的流的引用中读取?
- c# - 我正在使用 ASP.Net 实现 DocuSign API,但是在每次发送信封并重定向到 DocuSign 站点时需要登录到 DocuSign 站点?
- java - Liferay:执行索引操作时发生错误
- agora.io - 在 Android 中未收到来自 iOS 的 RTM 消息
- xgboost - xgboost.core.XGBoostError:不支持 Unicode
- batch-file - 批处理命令删除文件中的“
- c# - Nuget - “无法加载文件或程序集‘{类名},版本 = xxx,文化 = 中性,PublicKeyToken = null’或其依赖项之一”