Я пытаюсь передать информацию в цикл 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']))