知道为什么下面的代码无法识别第一个占位符?我假设我必须在它面前放一个特殊的角色,但我一直无法找到任何文件。我还试过一个简单的创建表?"没有成功。
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个参数
答案 0 :(得分:2)
查询参数用于在DML语句中指定列值;它们不能用于在DDL语句中指定对象(例如,列或表)名称。您将需要使用动态SQL(字符串替换)...
...假设您确实要为列表中的每个项目创建单独的表。如果这些表的结构相同,那么这是一个糟糕的设计。您最好使用一个包含额外列的表来识别与每行关联的列表项。