我有一个函数,它有一个新的改进版本的自动表索引代码:

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个值,因为百分号是“转义的”(对于第一个版本的答案,我感到羞愧)。

10-06 08:37