How to check if a MySQL connection is open in Python?
Question: I am using MySQLdb (<http://mysql-python.sourceforge.net/>). It seems that
connection.open and connection.sqlstate() do not work for me. Below is the
code:

    
    
    def open(self):
        #TODO: check the connection's status
        # self.__conn.open OR self.__conn.sqlstate()
        try:
            print "sqlstate:"+str( self.__conn.sqlstate() )
            print "open?"+str( self.__conn.open )
            return "00000" == self.__conn.sqlstate()
        except Exception as e:
            print "Exception while checking MYSQL Connection:"+str(e) 
            return False
    

But when I ran "sudo service mysql stop; sleep 60; sudo service mysql start;"
to do the testing. The output is as following. It seems that the following
piece of output repeated for ever (I killed the process finally). When the
server is down, connection.open is 1 and connection.sqlstate() is 00000. But
when server is up, connection.executemany() still throw exceptions. Any ideas?
Thanks.

    
    
    ...
        2015-10-20 14:09:06 Exception while executing statement:(2006, 'MySQL server has gone away')
        2015-10-20 14:09:06 sqlstate:00000
        2015-10-20 14:09:06 open?1
        2015-10-20 14:09:06 Reconnected to MYSQL.
        2015-10-20 14:09:06 Exception while executing statement:(2006, 'MySQL server has gone away')
        2015-10-20 14:09:06 sqlstate:00000
        2015-10-20 14:09:06 open?1
        2015-10-20 14:09:06 Reconnected to MYSQL.
        2015-10-20 14:09:06 Exception while executing statement:(2006, 'MySQL server has gone away')
        2015-10-20 14:09:06 sqlstate:00000
        2015-10-20 14:09:06 open?1
        2015-10-20 14:09:06 Reconnected to MYSQL.
        2015-10-20 14:09:06 Exception while executing statement:(2006, 'MySQL server has gone away')
        2015-10-20 14:09:06 sqlstate:00000
        2015-10-20 14:09:06 open?1
    ...
    

**UPDATE**

I tested again. The output is as following. each sleep is 10 seconds. The
output is OK except the connection.open is 1 even when server is down. But
connection.sqlstate() is right (HY000).

    
    
     2015-10-20 14:35:56 Exception while executing statement:(2006, 'MySQL server has gone away')
    2015-10-20 14:35:56 Exception while ping:(2003, "Can't connect to MySQL server on '10.1.1.25' (111)")
    2015-10-20 14:35:56 sqlstate:HY000
    2015-10-20 14:35:56 open?1
    2015-10-20 14:35:56 sleeping...
    2015-10-20 14:36:06 Exception while ping:(2003, "Can't connect to MySQL server on '10.1.1.25' (111)")
    2015-10-20 14:36:06 sqlstate:HY000
    2015-10-20 14:36:06 open?1
    2015-10-20 14:36:06 sleeping...
    2015-10-20 14:36:16 Exception while ping:(2003, "Can't connect to MySQL server on '10.1.1.25' (111)")
    2015-10-20 14:36:16 sqlstate:HY000
    2015-10-20 14:36:16 open?1
    2015-10-20 14:36:16 sleeping...
    2015-10-20 14:36:26 Exception while ping:(2003, "Can't connect to MySQL server on '10.1.1.25' (111)")
    2015-10-20 14:36:26 sqlstate:HY000
    2015-10-20 14:36:26 open?1
    2015-10-20 14:36:26 sleeping...
    2015-10-20 14:36:36 Exception while ping:(2003, "Can't connect to MySQL server on '10.1.1.25' (111)")
    2015-10-20 14:36:36 sqlstate:HY000
    2015-10-20 14:36:36 open?1
    2015-10-20 14:36:36 sleeping...
    2015-10-20 14:36:46 Exception while ping:(2003, "Can't connect to MySQL server on '10.1.1.25' (111)")
    2015-10-20 14:36:46 sqlstate:HY000
    2015-10-20 14:36:46 open?1
    2015-10-20 14:36:46 sleeping...
    2015-10-20 14:36:56 Exception while ping:(2003, "Can't connect to MySQL server on '10.1.1.25' (111)")
    2015-10-20 14:36:56 sqlstate:HY000
    2015-10-20 14:36:56 open?1
    2015-10-20 14:36:56 sleeping...
    2015-10-20 14:37:06 sqlstate:00000
    2015-10-20 14:37:06 open?1
    2015-10-20 14:37:06 Reconnected to MYSQL.
    


Answer: Try this-

    
    
    import MySQLdb
    
    def main():
      # Connect to the MySQL database
      db = MySQLdb.connect(host = 'z.cs.utexas.edu', user = 'userName', passwd = 'password', db = 'dbName')
    
      # Check if connection was successful
      if (db):
        # Carry out normal procedure
        print "Connection successful"
      else:
        # Terminate
        print "Connection unsuccessful"
    

