Python 获取索引器:元组索引超出范围
如果参数,我在下面代码的第3行得到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
索引器:元组索引超出范围
:
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)
通过这种方式,您可以为格式提供一个未打包的元组