获取IndexError:元组索引超出范围

时间:2019-08-23 10:33:28

标签: python python-2.7

我在第3行IndexError: tuple index out of range的以下代码中得到if params

   def query(self, sql, params=None):
        #params in form of a tuple
        if params:
            sql_new=sql.format(params)
            print sql_new
            self.cursor.execute(sql_new)
        else : self.cursor.execute(sql)
        return self.cursor.fetchall()

我正在尝试检查第二个参数是否已传递给查询,如果已传递,则格式化sql,sql="select * from {} where fl_id='{}'"params=("a","b")

2 个答案:

答案 0 :(得分:3)

您所要做的就是在格式语句中添加*

sql.format(*params)

通过这种方式,您可以为format提供一个未打包的元组。

答案 1 :(得分:2)

您应该将代码更改为以下内容:

    #params in form of a tuple
    if params and len(params) == 2 :

这样,您可以确定自己有2个参数。

然后,您必须分别通过以下方式传递元组元素:

        sql_new=sql.format(params[0], params[1])

因为.format()期望两个参数并且仅获得一个参数,因此会出现错误。