вставка pyodbc в sql

Я использую MS SQL express db. Я могу подключиться и получить данные. Но вставка данных не работает:

cursor.execute("insert into [mydb].[dbo].[ConvertToolLog] ([Message]) values('test')")

Я не получаю ошибку, но ничего не вставляется в таблицу. Сразу после того, как я получаю данные, вставленная строка извлекается. Но ничего не сохраняется.

в MS SQL Server Management Studio вставка работает.

1 ответов


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

в MS SQL Server Management Studio по умолчанию разрешена автоматическая фиксация, что означает, что каждая команда SQL немедленно работает, и откат невозможен.

пример вставки в pyodbc начало документа и

cursor.execute("insert into products(id, name) values ('pyodbc', 'awesome library')")
cnxn.commit()

или лучше использование параметров

cursor.execute("insert into products(id, name) values (?, ?)", 'pyodbc', 'awesome library')
cnxn.commit()

Как говорится в документе

обратите внимание на вызовы cnxn.совершать.)( вы должны вызвать commit или ваши изменения будут потеряны! когда соединение закрыто, все ожидающие изменения будут откатываться. Это делает восстановление ошибок очень простым, но вы должны помнить, чтобы вызвать commit.