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

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(字符串替换)...

...假设您确实要为列表中的每个项目创建单独的表。如果这些表的结构相同,那么这是一个错误的设计。一个表最好包含一个额外的列,以标识与每一行关联的列表项,这样会更好。

关于python - Python pyodbc无法识别参数标记。我提供了2个标记和两个值,但它无法识别它们,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/47778387/

10-10 02:46