Как передать несколько параметров в оператор вставки SQL Python, включая предложение where - PullRequest
0 голосов
/ 19 октября 2019

Я пытаюсь передать информацию в цикл python for из кадра данных python для обновления строк на сервере Microsoft SQL для обновления таблицы.

У меня есть значение фрейма данных Pandas в

row['id']

, что должно совпадать с предложением where в моем операторе обновления SQL

where id = ?

Мой полный оператор работает без передачи параметра предложения where и исключения последнего параметра из значения, но не при его включении.

Вот мой полный код, исключая мою дату DF:

df = DataFrame.from_records(data)

for index,row in df.iterrows():
    cursor.execute("UPDATE dbo.tickets SET ([updated_at],[type],[status],[group_id],[assignee_id]) 
    values(?,?,?,?,?) where id = ?", (row['updated_at'],row['type'],row['status'],row['group_id'],row['assignee_id'],row['id']))
    cursor.commit()

, но я получаю эту ошибку при выполнении кода:

[1241 строк x 36колонки] Traceback (последний вызов был последним): файл «olved.py », строка 54, в cursor.execute (« UPDATE dbo.tickets ([updated_at], [тип], [status], [group_id], [assignee_id] ») значения (?,?,?,?,?) где id =? ", (row ['updated_at'], row ['type'], row ['status'], row ['group_id'], row ['assignee_id'], строка ['id'])) pyodbc.ProgrammingError: ('42000', "[42000] [Microsoft] [Драйвер ODBC 17 для SQL Server] [SQL Server] Неправильный sСинтаксис рядом с '('. (102) (SQLExecDirectW);[42000] [Microsoft] [Драйвер ODBC 17 для SQL Server] [SQL Server] Оператор (ы) не может быть подготовлен. (8180) ")

Может кто-нибудь объяснить, что я здесь не так делаю? Спасибо.

Обновление:

Я фактически вставил неправильную команду обновленияи решили это следующим образом:

cursor.execute("UPDATE dbo.tickets SET [updated_at] = ?,[type] = ?,[status] = ?,[group_id] = ?,[assignee_id] = ? where [id] = (?)", (row['updated_at'],row['type'],row['status'],row['group_id'],row['assignee_id'],row['id']))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...