私の質問は本質的に 2 つあります。まず、Python で実行している SQlite を使用したデータベースがあります。
私のデータベースは次のとおりです。
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,)
したがって、これは、ref 列を検索するための idn パラメータの処理方法に問題があることを示しています。私の最初の質問は、列 ref の idn に入力した値を検索するにはどうすればよいですか?
2 番目の質問は、値を (20,) の形式ではなく数値として出力するにはどうすればよいかということです。これは、後で Python に別の数値 x を加算または減算し、値を更新するように指示するためです。データベースのエントリを 20+x に変更するため、特定の参照エントリの数量列の値である変数を Python で作成しようとしています。