gpt4 book ai didi

python - Python中的SQLite3 WHERE子句

转载 作者:行者123 更新时间:2023-12-05 00:41:39 24 4
gpt4 key购买 nike

最近使用 SQLite3 运行 python 3.3 时遇到问题。我创建了一个相当大的表,所以我将仅使用一个小示例:

CREATE TABLE X(omega TEXT, z TEXT, id INT);

现在,我正在使用各种函数从主脚本访问此表。在其中一个函数中,我有代码:

cur.execute("SELECT omega,z FROM X WHERE omega=?",Omega)

当我将 Omega 变量设置为一个字符的字符串时,这很好用。但是,当我增加字符数时(例如,如果 Omega='10'),则会出现以下错误:

    cur.execute("SELECT omega,z FROM X WHERE omega=?",Omega)
sqlite3.ProgrammingError: Incorrect number of bindings supplied. The current statement uses 1, and there are 2 supplied.

现在,我找到了解决方法:

cur.execute("SELECT omega,z FROM X WHERE omega="+Omega)

但我想知道为什么这行得通,而使用问号的“正确”方法却行不通。

提前致谢!

最佳答案

cur.execute("SELECT omega,z FROM X WHERE omega=?",(Omega,))

由于字符串是可迭代的,它会尝试将每个字母绑定(bind)到 ? (例如,它看到 cur.execute("SELECT omega,z FROM X WHERE omega=?",('1','0')) 而不是 cur.execute("SELECT omega ,z FROM X WHERE omega=?",('10',))

如果你这样指定,它知道字符串是绑定(bind)到问号的一项

关于python - Python中的SQLite3 WHERE子句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23394081/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com