Maison  >  Article  >  base de données  >  Pourquoi mes inserts Python MySQL ne fonctionnent-ils pas ?

Pourquoi mes inserts Python MySQL ne fonctionnent-ils pas ?

Barbara Streisand
Barbara Streisandoriginal
2024-11-06 01:07:02315parcourir

Why Are My Python MySQL Inserts Not Working?

Dépannage des opérations d'insertion Python MySQL

En Python, en utilisant l'API MySQL pour interagir avec une base de données MySQL, l'insertion d'enregistrements peut rencontrer des obstacles. Cet article aborde l'un de ces problèmes où les enregistrements ne parviennent pas à être insérés malgré une mise en œuvre apparemment correcte.

Le code fourni établit une connexion à la base de données et tente d'insérer un enregistrement dans la table « documents ». Cependant, l'opération d'insertion échoue. Pour résoudre ce problème, il est crucial de comprendre l'importance des transactions de base de données.

Dans MySQL, les modifications apportées à la base de données sont gérées via des transactions. Une transaction commence lorsqu'une connexion est établie et se termine lorsque la connexion est fermée ou lorsqu'une opération de validation ou d'annulation est explicitement appelée. Toutes les modifications apportées à la base de données au cours d'une transaction ne sont pas permanentes tant que la transaction n'est pas validée.

Dans le code fourni, l'opération d'insertion est exécutée avec succès, mais les modifications ne sont pas validées dans la base de données avant la fermeture de la connexion. (en utilisant db.close()). Sans valider la transaction, l'opération d'insertion est ignorée une fois la connexion fermée.

Pour résoudre ce problème et garantir la réussite de l'opération d'insertion, vous devez inclure un appel à db.commit() avant de fermer la connexion à la base de données. . Cette action valide la transaction, rendant l'enregistrement inséré persistant dans la base de données.

Voici le code modifié qui inclut l'opération de validation :

<code class="python">db = MySQLdb.connect("localhost", "root", "padmaramulu", "pdfsearch")
cursor = db.cursor()
# cursor.execute("""CREATE TABLE IF NOT EXISTS documents (docid INT NOT NULL ,PRIMARY KEY(docid),docname CHAR(30)) engine=innodb""")
temp = "hello"; number = 2;
cursor.execute('insert into documents(docid,docname) values("%d","%s")' % (number, temp))
db.commit()
db.close()</code>

En incluant l'appel db.commit(), les modifications apportées lors de la transaction, y compris l'opération d'insertion, sont validées dans la base de données et deviennent permanentes.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn