为什么 PyODBC 认为我的 SQL 只有 1 个参数

Why does PyODBC Thinks my SQL Only has 1 Param

谁能帮我理解为什么 ODBC 只认为我的 sql 中有 1 个参数?

sql = """
   IF OBJECT_ID('?', 'U') IS NOT NULL
   begin
       DROP TABLE ?
   end"""
cursor.execute(sql, table_name, table_name)
pyodbc.ProgrammingError: ('The SQL contains 1 parameter markers, but 2 parameters were supplied', 'HY000')

您传递的是文字字符串“?”到 OBJECT_ID 函数。

IF OBJECT_ID('?', 'U') IS NOT NULL

应该是

IF OBJECT_ID(?, 'U') IS NOT NULL

但如果这是 SQL 服务器,则还有另一个问题。不能参数化 DDL 语句,DROP TABLE 是 DDL 语句。