web-dev-qa-db-fra.com

pyodbc insérer dans sql

J'utilise une base de données MS SQL express. Je peux me connecter et récupérer des données. Mais l'insertion de données ne fonctionne pas:

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

Je ne reçois aucune erreur mais rien n'est inséré dans le tableau. Directement après avoir récupéré les données, la ligne insérée est récupérée. Mais rien n'est enregistré.

Dans MS SQL Server Management Studio, l'insertion fonctionne.

29
daniel

Vous devez valider les données. Chaque commande SQL se trouve dans une transaction et la transaction doit être validée pour écrire la transaction sur le serveur SQL afin qu'elle puisse être lue par d'autres commandes SQL.

Sous MS SQL Server Management Studio, la valeur par défaut est d'autoriser la validation automatique, ce qui signifie que chaque commande SQL fonctionne immédiatement et que vous ne pouvez pas revenir en arrière.

L'exemple d'insertion dans le document de démarrage pyodbc est

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

ou mieux en utilisant des paramètres

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

Comme le dit le document

Notez les appels à cnxn.commit (). Vous devez appeler commit ou vos modifications seront perdues! Lorsque la connexion sera fermée, toutes les modifications en attente seront annulées. Cela rend la récupération d'erreur très facile, mais vous devez vous rappeler d'appeler commit.

59
Mark