- Tout d'abord, vous avez une mauvaise syntaxe dans votre code. Python n'a pas de
try...catch
bloquer. Il atry...except
bloc qui est utilisé comme ceci :
try:
# something here
except:
# something here
- MySQL ne renvoie pas d'erreur lorsque vous utilisez
SELECT
commande. Cependant, il existe deux façons différentes de savoir s'il a renvoyé quelque chose ou non.
PYTHON 2.7
cursor.execute(
"SELECT Name, COUNT(*) FROM Item_Info WHERE Name = %s GROUP BY Name",
(item_name,)
)
# gets the number of rows affected by the command executed
row_count = cursor.rowcount
print "number of affected rows: {}".format(row_count)
if row_count == 0:
print "It Does Not Exist"
PYTHON 3+
cursor.execute(
"SELECT Name, COUNT(*) FROM Item_Info WHERE Name = %s GROUP BY Name",
(item_name,)
)
# gets the number of rows affected by the command executed
row_count = cursor.rowcount
print ("number of affected rows: {}".format(row_count))
if row_count == 0:
print ("It Does Not Exist")
Une autre façon de procéder serait de récupérer la déclaration et de vérifier si elle est vide :
# execute statement same as above
msg = cursor.fetchone()
# check if it is empty and print error
if not msg:
print 'It does not exist'
C'est ma première réponse, donc je ne sais pas comment styliser correctement le code dans la réponse, cela semble aussi désordonné à cause de cela. Désolé pour ça.
J'utilise aussi Python 3 et pymysql, donc il peut y avoir une erreur de syntaxe mais j'ai essayé d'écrire le code selon python 2.7 d'après ce dont je me souviens à ce sujet.
MODIFIER (01/05/2020)
Merci à @Arishta d'avoir souligné que la première méthode vous demandera de récupérer toutes les lignes avant d'utiliser row_count. c'est-à-dire en ajoutant cursor.fetchall()
avant le row_count = cursor.rowcount
cursor.execute(
"SELECT Name, COUNT(*) FROM Item_Info WHERE Name = %s GROUP BY Name",
(item_name,)
)
# Add THIS LINE
results = cursor.fetchall()
# gets the number of rows affected by the command executed
row_count = cursor.rowcount
print("number of affected rows: {}".format(row_count))
if row_count == 0:
print("It Does Not Exist")
Utilisez le cursor.fetchone()
si vous ne vous souciez que de savoir si l'enregistrement existe ou non.