MySQLクエリの結果が入力されたQCombobBoxesから2つの変数が選択されるプログラムを書いています。次に、これらの変数を取得して、変数を別の MySQL テーブルに挿入する MySQLdb ステートメントに挿入します。最初の変数は問題なく動作しますが、2 番目の変数ではこのエラーが発生します。
TypeError: 'NoneType' object has no attribute '__getitem__'
コードは、名前が異なることを除いて、両方の変数で同じです。
name = str(self.item_name.currentText())
cur.execute("SELECT item_id FROM Items WHERE name = '%s';"), name
db.commit()
results = cur.fetchone()
item_name = results[0]
personnel_name = str(self.purchaser_name.currentText())
cur.execute("SELECT personnel_id FROM Personnel WHERE name = '%s';"), personnel_name
db.commit()
results = cur.fetchone()
purchaser_id = results[0]
遊んだ後cur.execute("SELECT item_id FROM Items WHERE name = '%s';"), name
、値の周りに余分な引用符のペアを挿入しているように見え%s
ます 両方の変数をまったく同じようにコーディングしましたname
が、MySQL から余分な引用符のペアを取得しているようです
これは、QComboBox に入力するコードです。
#Get list of items currently in the database
cur = db.cursor()
cur.execute("SELECT name FROM Items")
db.commit()
results = cur.fetchall()
for name in results:
self.item_name.addItem(name[0])
#Get list of purchaser names
cur.execute("SELECT name FROM Personnel")
db.commit()
results = cur.fetchall()
for name in results:
self.purchaser_name.addItem(name[0])
変数を手動で挿入すると、正常に機能します。例:cur.execute("SELECT item_id FROM Items WHERE name = 'Wire';")
文字列の書式設定を使用する場合にのみ%s
、エラーが発生します。