Как мне исправить мой код для вставки в SQL Server с помощью Python 3.7

#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 .