我的问题基本上是双重的。首先,我有一个使用 SQlite 的数据库,我使用 Python 运行它。
我的数据库是:
CREATE TABLE cards (id integer primary key autoincrement not null, ref text unique
check(ref!=''), name text, description text, quantity integer default 0, cat1 text,
cat2 text);
INSERT INTO "cards" VALUES(1,'lx247','green door',NULL,20,'abstract','');
INSERT INTO "cards" VALUES(2,'lxx247','green door',NULL,20,'abstract','');
INSERT INTO "cards" VALUES(3,'lxx2f47','green door',NULL,20,'abstract','');
我正在运行以下 python 代码:
import sqlite3 as lite
import sys
con = lite.connect('cards.db')
idn = raw_input("Enter your ID number")
with con:
cur=con.cursor()
cur.execute("SELECT quantity FROM cards WHERE ref=?", idn)
print "Quantity" + str(cur.fetchone())
首先,当我执行此脚本并在提示符中输入“lx247”时,我收到以下错误消息:
Enter your ID numberlx247
Traceback (most recent call last):
File "test1.py", line 7, in <module>
cur.execute("SELECT quantity FROM cards WHERE ref=?", idn)
sqlite3.ProgrammingError: Incorrect number of bindings supplied.
The current statement uses 1, and there are 5 supplied.
我已经确定它所指的 5 是我在 idn 输入 (lx247) 中输入的字符数。如果我换行:
cur.execute("SELECT quantity FROM cards WHERE ref=?", idn)
至
cur.execute("SELECT quantity FROM cards WHERE id=?", idn)
并在提示符处输入'2',它返回:
Enter your ID number2
Quantity(20,)
所以这告诉我它处理 idn 参数以查找 ref 列的方式有问题。所以我的第一个问题是如何让它在 ref 列中查找我在 idn 中输入的值?
第二个问数据库中的条目为 20+x,所以我希望在 python 中创建一个变量,它是某个参考条目的数量列的值。