我正在编写一个程序,其中从 QCombobBoxes 中选择两个变量,这些变量填充了 MySQL 查询的结果。然后我将这些变量插入到 MySQLdb 语句中,该语句将变量插入到不同的 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
才会发生错误。