Maison > base de données > tutoriel mysql > Pourquoi mon instruction Python MySQL INSERT échoue-t-elle et comment puis-je y remédier ?

Pourquoi mon instruction Python MySQL INSERT échoue-t-elle et comment puis-je y remédier ?

Mary-Kate Olsen
Libérer: 2024-12-09 14:57:12
original
596 Les gens l'ont consulté

Why Does My Python MySQL INSERT Statement Fail, and How Can I Fix It?

Insertion de données dans une base de données MySQL

Énoncé du problème

Lorsque vous tentez d'insérer les valeurs 188 et 90 dans une base de données MySQL à l'aide d'un script Python, le code ne parvient pas à s'exécuter correctement. L'extrait de code suivant illustre la tentative infructueuse :

import MySQLdb
conn = MySQLdb.connect(host= "localhost",
                  user="root",
                  passwd="newpassword",
                  db="engy1")
x = conn.cursor()
x.execute("SELECT *  FROM anooog1")
x.execute (" INSERT INTO anooog1 VALUES ('%s','%s') ", (188,90))
row = x.fetchall()
Copier après la connexion

Solution

Le problème est dû à une erreur dans la requête SQL utilisée pour l'insertion. La syntaxe correcte pour insérer des données dans une table MySQL est la suivante :

INSERT INTO table_name (column1, column2, ...) VALUES (value1, value2, ...)
Copier après la connexion

Dans le code fourni, les guillemets simples ('') autour des valeurs sont incorrects. Les supprimer permettra à la requête de s'exécuter avec succès.

De plus, le mécanisme de gestion des exceptions a été ajouté pour empêcher des erreurs inattendues d'annuler les modifications apportées à la base de données. Le code modifié ci-dessous démontre l'implémentation correcte :

import MySQLdb
conn = MySQLdb.connect(host= "localhost",
                  user="root",
                  passwd="newpassword",
                  db="engy1")
x = conn.cursor()

try:
   x.execute("""INSERT INTO anooog1 VALUES (%s,%s)""",(188,90))
   conn.commit()
except:
   conn.rollback()

conn.close()
Copier après la connexion

Ce code révisé devrait réussir à insérer les valeurs 188 et 90 dans la table MySQL spécifiée.

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal