Подтвердить что ты не робот

Вставка pyodbc в sql

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

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

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

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

4b9b3361

Ответ 1

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

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

Пример вставки в документе pyodbc Getting Started -

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.