pymssql executemany insert valueerror

时间:2014-07-28 14:30:28

标签: python sql sql-server pymssql executemany

我收到错误:

  

文件" pymssql.pyx",第443行,在pymssql.Cursor.executemany中   (pymssql.c:6616)文件" pymssql.pyx",第417行,in   pymssql.Cursor.execute(pymssql.c:6057)File" _mssql.pyx",943行,   在_mssql.MSSQLConnection.execute_query(_mssql.c:9858)文件中   " _mssql.pyx",第974行,在_mssql.MSSQLConnection.execute_query中   (_mssql.c:9734)文件" _mssql.pyx",第1091行,in   _mssql.MSSQLConnection.format_and_run_query(_mssql.c:10814)文件" _mssql.pyx",第1113行,_mssql.MSSQLConnection.format_sql_command   (_mssql.c:11042)文件" _mssql.pyx",第1797行,in   _mssql._substitute_params(_mssql.c:18646)ValueError:sql中的占位符多于可用的params

执行批量插入到mssql表(executemany)时。在一个执行statemend和mssql管理工作室中插入相同的数据就可以了。

我尝试使用字典和元组执行executemany(data) - 结果相同。

代码:

cursor.executemany("insert table Values (%s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s)", (data))

有什么想法吗?

1 个答案:

答案 0 :(得分:1)

data中的所有子列表/子数字的长度应为21(SQL查询中的%s数)。

但是。您的data也有长度为11,12,13,15,16,17,18,19和20的项目。 而且您收到错误more placeholders (meaning: %s) in sql than params (meaning: sublists in data) available

要解决此问题:请检查您如何生成data以及每data项无情地生成二十一个。