我正在編寫一個程序,其中從QCombobBoxes中選擇了兩個變量,這些變量都填充了MySQL查詢的結果。然後我將這些變量插入一個MySQLdb語句中,該語句將變量插入到不同的MySQL表中。第一個變量工作正常,但是在第二我得到這個錯誤,PyQt組合框結果在MySQL中不起作用
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
發生錯誤發生。
我正在使用Python 2.7。這可能是錯誤的,但是我在這些情況下學會了使用'%'。 – sommerjj 2013-03-27 22:15:39
它應該是'cur.execute(「SELECT item_id FROM Items WHERE name ='%s';」,(name,))''它可能mysql驅動程序自動將%s作爲引用字符串包裝 – 2013-03-27 22:42:27