-2

Pythonとsqlite3を使用してデータベースをセットアップしています。商品に関する情報を変更できるように、在庫データベースを更新する必要があります。

私が持っている現在のコードは次のとおりです。

itemname = e0.get()
quantity = e1.get()
manufacturer = e2.get()
itemnumber = e3.get()
price = e4.get()
curriculumlink = e5.get()
yeargrouplink = e6.get()
location = e7.get()

これらはすべて tkinter エントリ ボックスから取得されたもので、現在、アイテムについてデータベースが既に持っている情報に基づいて、私がロードした情報を保持しています。

cursor = db.cursor()
sql = "UPDATE items SET quantity = '%s' WHERE name = '%s';" % quantity.strip(), itemname.strip()
cursor.execute(sql)
db.commit()

このコードでエラーが発生し、数量が更新されません。誰かがこれについて何か提案があれば、本当に感謝しています。

ただし、上記のすべてのプロパティを 1 つの SQL ステートメントで更新する方法はありますか。データベース内のすべてのフィールドは、上記のユーザー入力の名前と同じです。

御時間ありがとうございます :)

4

1 に答える 1

0
sql = "UPDATE items SET quantity = '%s' WHERE name = '%s';" % (quantity.strip(), itemname.strip())

問題を修正します(括弧なしでタプルを解釈していませんでした) が、実際にはsqlite3エンジンがフォーマットを実行する必要があります

cursor.execute("UPDATE items SET quantity=?WHERE name=?",[qty,name])

実際には、データベースエンジンを簡単に切り替え、すべてのデータをクラスとして表現できる sqlalchemy のような ORM を使用する必要があります。

 class Item(Base):
     __tablename__ = "items"
     name = Column(String,primary_key=True)
     qty = Column(Integer,default=0)
于 2015-04-23T16:35:35.163 に答える