我写了一个如下方法:
def add(self,table_name, tc_no, file_no):
self._cursor.execute("select HastaId from {}".format(table_name)," where TC=%s and FileNo=%s",(tc_no,file_no))
row = self._cursor.fetchone()
return row
我收到了错误
TypeError:execute()最多需要2个位置参数(给定3个)
我知道format()
中的错误。我该怎么用?
答案 0 :(得分:0)
你有正确的想法。查询参数只能表示列值,而不能表示列或表名称。
因此,你做需要使用字符串格式将表名插入SQL命令文本中,然后使用查询参数来提供WHERE子句的值。
所以,这样的结构不起作用:
crsr.execute(
"select HastaId from %s where TC=%s and FileNo=%s",
(table_name, tc_no, file_no))
但这将有效
crsr.execute(
"select HastaId from [{}] where TC=%s and FileNo=%s".format(table_name),
(tc_no, file_no))