在@ P26'附近插入错误'错误的语法添加新列和插入时

时间:2017-05-04 16:07:12

标签: python sql-server parameters sql-insert pyodbc

我一直遇到错误,似乎无法在网上找到解决方案。我目前有一个有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)

非常感谢你帮助我完全陷入困境。对不起代码中的奇怪缩进。 (注意:我知道语法是正确的,因为它在删除新列和参数标记并重新运行时有效。)

1 个答案:

答案 0 :(得分:1)

这是一个语法问题,请检查您的“?”第26个值。这发生在我身上我有这样的语法:

....?,?,?。?

这是我的第23个值,错误告诉我@ P23。 来源:exp。