我有一个函数,它有一个新的改进版本的自动表索引代码:
def update_tableIndex(self,tableName):
getIndexMySQLQuery = """SELECT numberID
FROM %s;""" % (tableName,)
updateIndexMySQLQuery = """UPDATE %s
SET numberID=%s WHERE numberID=%s;""" % (tableName,)
updateIndex=1
self.cursorMySQL.execute(getIndexMySQLQuery)
for row in self.cursorMySQL:
indexID = row[0]
self.cursorMySQL.execute(updateIndexMySQLQuery,(updateIndex,indexID))
updateIndex+=1
虽然查询“getIndexMySQLQuery”可以使用此语法,但另一个“updateIndexMySQLQuery”不起作用。
有什么提示或建议可以解决这个问题吗?
所有的意见和建议都非常感谢。
最佳答案
第二个不起作用,因为您在查询字符串中使用了三个占位符,并且只为插值提供了一个变量。
updateIndexMySQLQuery = """UPDATE %s
SET numberID=%%s WHERE numberID=%%s;""" % (tableName,)
这样,字符串格式化机制就不会期望您提供3个值,因为百分号是“转义的”(对于第一个版本的答案,我感到羞愧)。