【发布时间】:2022-01-17 08:24:08
【问题描述】:
我有一个列列表要添加到 SQL Server 数据库中。
colList = ['title', 'docDate', 'coleadAgency',
'usBusinessName', 'description',
'acquCountry', 'ubo1Value', 'naicsCode',
'mitigation']
我有一个名为 TAbby 的表,并希望将这些列添加到其中。我试过了
for col in colList:
cur.execute(""" ALTER TABLE TAbby ADD (?) NVARCHAR(255) """, col)
cur.commit()
但我得到了错误:
ProgrammingError: ('42000', "[42000] [Microsoft][ODBC Driver 17 for SQL Server][SQL Server]'(' 附近的语法不正确。(102) (SQLExecDirectW); [42000] [Microsoft][ ODBC Driver 17 for SQL Server][SQL Server]无法准备语句。(8180)")
【问题讨论】:
-
你不能参数化 DDL 语句。
-
谢谢@DaleK 这是否意味着我别无选择,只能手动添加所有列?
-
不,这意味着如果你想这样做,你需要使用字符串连接而不是参数 - 我想无论如何,我不知道 python,但我假设 ?在幕后使用参数。如果您自己构建字符串,请尝试,例如
"ALTER TABLE TAbby ADD " + col + " NVARCHAR(255)"。这样做的问题是它不安全,因为您对 SQL 注入持开放态度。
标签: python sql-server tsql