pymssql executemany вставить valueerror

Я получаю ошибку:

Файл "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), файл" _xssql. 1091, в файле _mssql.MSSQLConnection.format_and_run_query (_mssql.c:10814), файл "_mssql.pyx", строка 1113, в команде _mssql.MSSQLConnection.format_sql_command (_mssql.c:11042l, строка 17, в строке _17x1, 0, 17 строк, в строке "_m")._substitute_params (_mssql.c:18646) ValueError: больше заполнителей в sql, чем доступных параметров

при выполнении массовой вставки в таблицу mssql (executemany). Вставка одних и тех же данных в одно состояние выполнения, а также в mssql management studio работает просто отлично.

Я попробовал 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))

Есть идеи?

1 ответ

Решение

Все подсписки / субтитры в data должен иметь длину 21 (количество%s в вашем запросе SQL).

Но. Ваш 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 вещь.

Другие вопросы по тегам