我在第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")
答案 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()
期望两个参数并且仅获得一个参数,因此会出现错误。