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 traite d'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 jusqu'à ce que la transaction soit 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 :
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()
En incluant l'appel db.commit(), les modifications apportées au cours de la transaction, y compris l'opération d'insertion, sont validées dans la base de données et deviennent permanentes.
Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.
Copyright© 2022 湘ICP备2022001581号-3