1

我收到一个错误:

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

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

我用字典和元组尝试了executemany(数据) - 结果相同。

编码:

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))

有任何想法吗?

4

1 回答 1

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件物品都有 21 个。

于 2014-07-28T14:46:10.497 回答