Python pyodbc无法识别参数标记。I';我提供了两个标记和两个值,但它无法识别它们

Python pyodbc无法识别参数标记。I';我提供了两个标记和两个值,但它无法识别它们,python,sql,sql-server,pyodbc,Python,Sql,Sql Server,Pyodbc,你知道为什么下面的代码不能识别第一个占位符吗?我假设我必须在它前面放一个特殊的字符,但是我一直找不到任何关于它的文档。我还尝试了一个简单的“创建表”,但没有成功 for champ in champion_list: UPDATE_SQL = """\ if not exists (select * from sysobjects where name=? and xtype='U') CREATE TABLE [dbo].[?](

你知道为什么下面的代码不能识别第一个占位符吗?我假设我必须在它前面放一个特殊的字符,但是我一直找不到任何关于它的文档。我还尝试了一个简单的“创建表”,但没有成功

for champ in champion_list:
    UPDATE_SQL = """\
        if not exists (select * from sysobjects where name=? and xtype='U')
            CREATE TABLE [dbo].[?](
                [champId] [varchar](50) NOT NULL,
                [championName] [varchar] NOT NULL,
                [version] [varchar](50) NOT NULL
            ) ON [PRIMARY]
     """
    values=(champ,champ)
    try:
        cursorprod.execute(UPDATE_SQL, values)
        print str(champ),'table added.'
    except Exception as e:
        print(e)
我得到了错误

SQL包含1个参数标记,但提供了2个参数


查询参数用于指定DML语句中的列值;它们不能用于在DDL语句中指定对象(例如列或表)名称。您需要使用动态SQL(字符串替换)来


。。。假设您确实希望为列表中的每个项目创建单独的表。如果这些表的结构相同,那么这是一个糟糕的设计。您最好使用一个包含额外列的表来标识与每行关联的列表项。

您得到的实际错误是什么?另外,
[dbo]...?]
应该做什么?是否尝试将表名作为参数传递?我很确定这不受支持,但我不确定您在这个问题中使用的语法。是的,我试图使用一个参数来设置表名。我正在尝试为列表中的每个项目创建一个表。实际错误是:(“SQL包含1个参数标记,但提供了2个参数”,“HY000”)您可能必须使用字符串格式传递表名。