Python pyodbc无法识别参数标记。我提供了2个标记和两个值,但它没有识别它们

时间:2017-12-12 17:33:30

标签: 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].[?](
                [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个参数

1 个答案:

答案 0 :(得分:2)

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

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