在运行时将表名添加到SQL查询

时间:2016-01-01 01:29:25

标签: python pymssql

我写了一个如下方法:

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()中的错误。我该怎么用?

1 个答案:

答案 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))