2013-11-25 20 views
14

Uso un MS SQL express db. Posso connettermi e recuperare i dati. Ma l'inserimento dei dati non funziona:pyodbc inserire in sql

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

Non ottengo alcun errore ma non viene inserito nulla nella tabella. Immediatamente dopo aver recuperato i dati, la riga inserita viene recuperata. Ma nulla è salvato.

In MS SQL Server Management Studio l'inserimento funziona.

risposta

33

È necessario impegnare i dati. Ogni comando SQL è in una transazione e la transazione deve essere impegnata per scrivere la transazione su SQL Server in modo che possa essere letta da altri comandi SQL.

In MS SQL Server Management Studio l'impostazione predefinita è di consentire il commit automatico, il che significa che ogni comando SQL funziona immediatamente e non è possibile eseguire il rollback.

L'esempio di inserimento nella pyodbc Getting Started document è

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

o meglio utilizzando parametri

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

Come dice il documento

Nota le chiamate al cnxn.commit(). È necessario chiamare il commit o le modifiche verranno perse! Quando la connessione viene chiusa, tutte le modifiche in sospeso verranno ripristinate. Ciò rende molto facile il recupero degli errori, ma è necessario ricordare di chiamare commit.

Problemi correlati