libreria conectar con python sql sql-server-express python-2.6 pyodbc

python - conectar - pyodbc insertar en sql



sql server connector python (1)

Yo uso un db MS SQL Express. Puedo conectarme y recuperar datos. Pero insertar datos no funciona:

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

No obtengo ningún error pero no se inserta nada en la tabla. Directamente después de recuperar los datos, se recupera la fila insertada. Pero nada se salva.

En MS SQL Server Management Studio la inserción funciona.


Necesitas confirmar los datos. Cada comando SQL está en una transacción y la transacción debe comprometerse a escribir la transacción en el servidor SQL para que pueda ser leída por otros comandos SQL.

Bajo MS SQL Server Management Studio, el valor predeterminado es permitir la confirmación automática, lo que significa que cada comando SQL funciona inmediatamente y no se puede revertir.

El ejemplo de inserción en el documento de introducción de pyodbc es

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

o mejor usando parámetros

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

Como dice el documento

Tenga en cuenta las llamadas a cnxn.commit (). ¡Debes llamar a commit o tus cambios se perderán! Cuando se cierra la conexión, cualquier cambio pendiente se revertirá. Esto hace que la recuperación de errores sea muy fácil, pero debe recordar llamar a commit.