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