Comment tester la connectivité de base de données en python?
Je suis accédant à une base de données MySQL à partir de python via MySQLdb de la bibliothèque. Je suis tenté de tester la connexion de base de données comme indiqué ci-dessous.
db = MySQLdb.connect(self.server, self.user,
self.passwd, self.schema)
cursor = db.cursor()
try:
cursor.execute("SELECT VERSION()")
results = cursor.fetchone()
ver = results[0]
if (ver is None):
return False
else:
return True
except:
print "ERROR IN CONNECTION"
return False
Est-ce la bonne manière, l'on devrait tester la connectivité lors de l'écriture des cas de tests unitaires? Si il ya une meilleure façon, éclaire!
corrigé l'erreur dans le code. Besoin de savoir si c'est une bonne façon de tester?
Pourquoi voulez-vous test connectivité? Que faites-vous si le test échoue?
Je suis d'écriture de l'unité de cas de tests pour la db méthodes d'accès. Tellement envie d'écarter le cas lors de l'accès de base de données échoue.
ick, nu à l'exception de la chasse. N'est-il pas plus précis exception qui va être jeté que vous pouvez attraper?
Pourquoi voulez-vous test connectivité? Que faites-vous si le test échoue?
Je suis d'écriture de l'unité de cas de tests pour la db méthodes d'accès. Tellement envie d'écarter le cas lors de l'accès de base de données échoue.
ick, nu à l'exception de la chasse. N'est-il pas plus précis exception qui va être jeté que vous pouvez attraper?
OriginalL'auteur Nemo | 2012-07-31
Vous devez vous connecter pour publier un commentaire.
J'ai peut-être tort (ou une mauvaise interprétation de votre question 🙂 ), mais je crois que l'un lié à la connexion exception est lancée sur
MySQLdb.connect()
. Avec MySQLdb, à l'exception de l'attraper estMySQLdb.Error
. Par conséquent, je suggère de déplacer ledb
le programme d'installation à l'intérieur de latry
bloc et d'attraper la bonne exception (MySQLdb.Error
). Aussi, comme @JohnMee mentionne,fetchone()
sera de retour Aucun, s'il n'y a pas de résultats, donc cela devrait fonctionner:Si vous n'avez pas de soins sur la connexion et cherchent juste à tester l'exécution de la requête, je suppose que vous pourriez quitter la configuration de la connexion à l'extérieur de la
try
mais comprennentMySQLdb.Error
dans votre exception, peut-être comme suit:Ce serait au moins vous donner une explication plus détaillée de la raison de l'échec.
OriginalL'auteur RocketDonkey
Oui. Me semble bon.
Mes préférences personnelles:
les "résultats" sera nul quand il n'y a pas de connexion. Vous aurez probablement quelques autres exception d'essayer de faire "les résultats[0]" lorsque son Aucun. L'essayer!
j'aime l'idée de lancer manuellement une exception. qui une pour lancer tho? lol
OriginalL'auteur John Mee