Python 获取索引器:元组索引超出范围

Python 获取索引器:元组索引超出范围,python,python-2.7,Python,Python 2.7,如果参数,我在下面代码的第3行得到索引器:元组索引超出范围: 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.c

如果参数,我在下面代码的第3行得到
索引器:元组索引超出范围

   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{},其中fl_id='{}'
params=(“a”,“b”)

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

    #params in form of a tuple
    if params and len(params) == 2 :
通过这种方式,您可以确保正好有两个参数

然后必须分别传递元组元素,如下所示:

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

因为
.format()
需要两个参数,但只得到一个参数,因此会出现错误。

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

    #params in form of a tuple
    if params and len(params) == 2 :
通过这种方式,您可以确保正好有两个参数

然后必须分别传递元组元素,如下所示:

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

因为
.format()
需要两个参数,但只得到一个,因此会出现错误。

只需将
*
添加到格式化语句中:

sql.format(*params)

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

只需将
*
添加到格式化语句中即可:

sql.format(*params)
通过这种方式,您可以为
格式提供一个未打包的元组