我一直遇到错误,似乎无法在网上找到解决方案。我目前有一个有36列的SQL,并且正在使用delete语句,然后每天通过CSV和python程序插入新值。这是一个基本的Insert Into语句,它使用python for循环插入CSV中的所有行。
我刚刚在SQL表和python程序中的insert语句中添加了一个新列(我过去曾多次对同一个表执行此操作),但每当我使用新的insert语句程序时,我得到以下内容错误:
pyodbc.ProgrammingError: ('42000', "[42000] [Microsoft][ODBC SQL Server
Driver][SQL Server]Incorrect syntax near '@P26'. (102) (SQLExecDirectW);
[42000] [Microsoft][ODBC SQL Server Driver][SQL Server]Statement(s) could
not be prepared. (8180)")
我假设' @ P26'是指一些参数,但我没有使用任何SQL参数。下面是我的Python / SQL代码片段:
SQL = """insert into example_table( [Column_1],
[Column_2],
[Column_3],
[Column_4],
[Column_5],
[Column_6],
[Column_7],
[Column_8],
[Column_9],
[Column_10],
....
[Column_36],
[New Column]
) values (?,?,?,?,?,?,?,?,?,?,?,?,
?,?,?,?,?,?,?,?,?,?,?,?,
?,?,?,?,?,?,?,?,?,?,?,?,?)"""
cursor2.execute("delete example_table")
for row in csv_data:
cursor2.execute(SQL, row)
非常感谢你帮助我完全陷入困境。对不起代码中的奇怪缩进。 (注意:我知道语法是正确的,因为它在删除新列和参数标记并重新运行时有效。)
答案 0 :(得分:1)
这是一个语法问题,请检查您的“?”第26个值。这发生在我身上我有这样的语法:
....?,?,?。?)
这是我的第23个值,错误告诉我@ P23。 来源:exp。