I am accessing a MySQL database from python via MySQLdb library. I am attempting to test the database connection as shown below.
db = MySQLdb.connect(self.s
I could be wrong (or misinterpreting your question :) ), but I believe the a connection-related exception gets thrown on MySQLdb.connect()
. With MySQLdb, the exception to catch is MySQLdb.Error
. Therefore, I would suggest moving the db
setup inside of the try
block and catching the proper exception (MySQLdb.Error
). Also, as @JohnMee mentions, fetchone()
will return None if there are no results, so this should work:
try:
db = MySQLdb.connect(self.server, self.user,
self.passwd, self.schema)
cursor = db.cursor()
cursor.execute("SELECT VERSION()")
results = cursor.fetchone()
# Check if anything at all is returned
if results:
return True
else:
return False
except MySQLdb.Error:
print "ERROR IN CONNECTION"
return False
If you don't care about the connection and are just looking to test the execution of the query, I guess you could leave the connection setup outside the try
but include MySQLdb.Error
in your exception, perhaps as follows:
db = MySQLdb.connect(self.server, self.user,
self.passwd, self.schema)
cursor = db.cursor()
try:
cursor.execute("SELECT VERSION()")
results = cursor.fetchone()
# Check if anything at all is returned
if results:
return True
else:
return False
except MySQLdb.Error, e:
print "ERROR %d IN CONNECTION: %s" % (e.args[0], e.args[1])
return False
This would at least give you a more detailed reason of why it failed.
Yes. Looks good to me.
My personal preferences: