#python #pymssql
#python #pymssql
Вопрос:
Я пытаюсь вставить данные в таблицу SQL Server с помощью Python37 (pymssql), но я получаю сообщение об ошибке, как показано ниже. У вас есть какие-либо предложения?
Это значения, которые нужно вставить в таблицу
values = ['test','test', 'test', 'test', 'test', 'test','test','test','test','test','test','test','test','test']
Строка SQL в коде python
insSQL = '''INSERT INTO [dbo].[S_LAZ_GET_ORDERS](ORDER_ID,
ORDER_NUMBER,
BILL_ADDRESS1,
BILL_ADDRESS2,
BILL_ADDRESS3,
BILL_ADDRESS4,
BILL_ADDRESS5,
BILL_CITY,
BILL_COUNTRY,
BILL_FIRST_NAME,
BILL_LAST_NAME,
BILL_PHONE,
BILL_PHONE2,
BILL_POST_CODE)
VALUES (%s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s)'''
cur.executemany(insSQL, values)
cur.commit()
Это ошибка, которую я получаю:
Обратная трассировка (последний последний вызов):
файл «src_mssql.pyx», строка 1930, в _mssql._substitute_params Ошибка
индекса: индекс кортежа вне диапазонаВо время обработки вышеупомянутого исключения возникло другое исключение:
Трассировка (последний последний вызов):
файл «D:Python ПроектLazada APIgetOrder.py «, строка 125, в файле getorders()
«D:Python ПроектLazada APIgetOrder.py «, строка 109, в getorders
cur.executemany(insSQL, значения)Файл «src pymssql.pyx», строка 476, в файле pymssql.Cursor.
executemany «srcpymssql.pyx», строка 450, в файле pymssql.Cursor.execute
«src_mssql.pyx», строка 1070, в файле _mssql.MSSQLConnection.execute_query
«src_mssql.pyx», строка 1101, в файле _mssql.MSSQLConnection.
execute_query «src_mssql.pyx», строка 1218, в файле _mssql.MSSQLConnection.
format_and_run_query «src_mssql.pyx», строка 1240, в файле _mssql.MSSQLConnection.format_sql_command
«src_mssql.pyx», строка 1932, в _mssql._substitute_paramsОшибка значения: в SQL больше заполнителей, чем доступных параметров
Ответ №1:
Список values
должен представлять собой последовательность параметров (каждый элемент внутри values
представляет собой одну строку для вставки). Итак, если вы хотите вставить одну строку в свою таблицу, где каждая ячейка в строке имеет значение ‘test’, тогда просто поместите один кортеж из 14 элементов внутри значений следующим образом:
values = [('test','test', 'test', 'test', 'test', 'test','test','test','test','test','test','test','test','test')]
Если вы хотите добавить больше строк, просто добавьте больше кортежей в values
.