2017-08-21 2 views

Répondre

2

Les docs vous pointez est sur mysql-connector, non MySQLdb (alias mysql-python, eh bien, il y a beaucoup de pilotes API DB Python pour MySQL). Les docs pour MySQLdb sont à http://mysql-python.sourceforge.net/MySQLdb.html

Connection objects in MySQLdb ont méthode .ping() avec un seul paramètre et ne pas .is_connected(). Vous recherchez conn.ping(True).

+0

Je dois avoir rebranché activé dans ma config mysql droite? – Cijo

+0

Je ne le fais pas. Peut-être que c'est la valeur par défaut. – phd

+0

Nouveauté 1.2.2: Accepte un paramètre de reconnexion facultatif. Si la valeur est True, , le client tentera de se reconnecter. Notez que ce paramètre est persistant. Par défaut, il est activé dans MySQL <5.0.3, et désactivé ensuite . – Cijo

0

Je pense que vous devriez essayer

if conn.open: 
    do some code... 
+0

Quelle est la différence entre eux – Cijo

+0

Est-ce que ça marche, ça devrait marcher. – MishaVacic

0

En fait, dans MySQLdb, plus élégante, ne vérifiez pas si la connexion est active. Vérifiez si la connexion est active provoquera également une exception si le serveur mysql ferme la connexion de façon lente. Laissez-le et utilisez le mécanisme de reconnexion dans un bloc try except.

Dans MySQLdb, il existe un errorhandler dans connection.py qui sera utilisé en cas d'erreur.

def defaulterrorhandler(connection, cursor, errorclass, errorvalue): 
""" 

If cursor is not None, (errorclass, errorvalue) is appended to 
cursor.messages; otherwise it is appended to 
connection.messages. Then errorclass is raised with errorvalue as 
the value. 

You can override this with your own error handler by assigning it 
to the instance. 

""" 
error = errorclass, errorvalue 
if cursor: 
    cursor.messages.append(error) 
else: 
    connection.messages.append(error) 
del cursor 
del connection 
raise errorclass, errorvalue 

voir le 'del connection'. Il ferme la connexion et définit la connexion sur None. alors laissez simplement l'erreur arriver et après cela, nous reconstruisons le monde.

Vous avez juste besoin d'implémenter un mécanisme de reconnexion dans un bloc try except pour faire face à un problème tel que Mysql a disparu.