Comment obtenir MySQL type d'erreur avec PyMySQL?
Je suis en train de faire une application en Python avec MySQL et PyMySQL et je voudrais être en mesure de connaître le numéro de l'erreur MySQL lorsque je reçois un afin que je puisse faire quelque chose de différent en fonction de cela.
Est-il un moyen de le faire avec un try-à l'exception de la déclaration ou d'une autre manière?
OriginalL'auteur Adrian | 2014-07-29
Vous devez vous connecter pour publier un commentaire.
Aucune exception pour le Python a une
args
membre qui vous montre comment il a été construit. Par exemple:Pour pymysql, ils sont toujours construits avec
(errno, errorvalue)
. Donc:Je ne suis pas sûr que cela est garanti par la documentation, mais vous pouvez voir comment cela fonctionne assez facilement à partir de la source.
OriginalL'auteur abarnert
C'est un début, mais des tas d'autres erreurs existent, par exemple. OperationalError
OriginalL'auteur Berto
pymysql cartes mysql erreurs erreurs python, selon le tableau suivant:
si vous voulez rattraper les erreurs, alors vous aurez besoin pour attraper ProgrammingError, DataError, IntegrityError, NotSupportedError, et OperationalError, individuellement. Vous pouvez voir précisément qui d'erreur mysql a été attiré par le fait de contraindre l'exception d'une chaîne à l'aide de
str
.Le numéro d'erreur est disponible en tant que le premier argument de l'exception: donc
e.args[0]
sera le mysql numéro d'erreur.Oui, c'est ce que mes réponses dit, mais votre réponse lui montre comment attraper une erreur spécifique de la classe, et comment obtenir de la chaîne, ni de qui est ce qu'il a demandé.
"NameError: name 'IntegrityError" n'est pas défini" quand j'ajoute "sauf IntegrityError que e:"
Vous devez l'importer.
from pymysql.err import IntegrityError
OriginalL'auteur Andrew Johnson