我收到错误:
文件" 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))
有什么想法吗?
答案 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
项无情地生成二十一个。