如何在 SQL 服务器上使用 python odbc DROP TABLE?

How to DROP TABLE with python odbc on SQL Server?

我正在为 SQL 服务器和 pyodbc 使用 ODBC 驱动程序 17。以下代码不起作用。

cursor.execute("""DROP TABLE IF EXISTS ?""", "table_name")

有什么问题?

一种可能是使用采用 QUOTENAME 函数的匿名代码块来确保您传递的字符串被视为完整的 table 名称:

# this table name could be problematic if QUOTENAME wasn't used
tbl_name = "]; TRUNCATE TABLE Customer; --"

sql = """\
SET NOCOUNT ON;
DECLARE @drop NVARCHAR(max);
SET @drop = 'DROP TABLE IF EXISTS ' + QUOTENAME(?);
EXEC sp_executesql @drop;
"""
crsr.execute(sql, tbl_name)