Python - Как добавить новый столбец на сервере SQL и вставить строки списков - PullRequest
1 голос
/ 20 марта 2019

Я хочу вставить значения в SQL Server из python. Вот мой код:

for value in rows:
    cursor.execute ("""INSERT INTO Table ([ColumnOne]) VALUES (?)""", value)
cnxn.commit()

В rows он содержит списки (итерации) строк, что-то вроде этого: строка 1 содержит списки чисел с плавающей точкой

1,0 2,0 1,5 1,75

..... (всего 1000 значений в строке / столбце), И то же самое происходит с row2, row3 и так далее. Но когда я пытался запустить код, у меня появляется эта ошибка

pyodbc.ProgrammingError: ('SQL содержит 1 маркер параметра, но Было предоставлено 1000 параметров »,« HY000 »)

Есть ли способ, которым я мог бы сделать так, чтобы значения с плавающей запятой не обрабатывались отдельно или для решения этой проблемы? Я думаю, может быть, я должен использовать оператор ','.join, чтобы сделать его в виде строки? Учитывая, что я плохо разбираюсь и плохо знаком с python, пожалуйста, исправьте меня, если у меня возникнут ошибки. Спасибо.

1 Ответ

1 голос
/ 20 марта 2019

Когда вы пытаетесь вставить несколько строк таблицы в один запрос, вам нужно предоставить список значений для каждой строки.

Например, следующий запрос будет вставлять две строки:

INSERT INTO Table (ColumnOne) VALUES (1.0), (2.0);

Итак, ваш код на Python должен подготовить правильную VALUES часть запроса:

for row in rows:
    values = ", ".join(("(?)",) * len(row))
    cursor.execute(f"INSERT INTO Table (ColumnOne) VALUES {values}", row)
...