Potrei sbagliare (o interpretare erroneamente la tua domanda :)), ma credo che un'eccezione relativa alla connessione venga lanciata su MySQLdb.connect()
. Con MySQLdb, l'eccezione da catturare è MySQLdb.Error
. Pertanto, suggerirei di spostare l'installazione db
all'interno del blocco try
e di rilevare l'eccezione appropriata (MySQLdb.Error
). Inoltre, come cita @JohnMee, fetchone()
si restituiscono None se non ci sono risultati, quindi questo dovrebbe funzionare:
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
Se non vi interessa circa il collegamento e sta solo cercando di verificare l'esecuzione della query, Credo che si potrebbe lasciare la configurazione della connessione al di fuori del try
ma includono MySQLdb.Error
nella vostra eccezione, forse, come segue:
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
Questo sarebbe almeno dare una ragione più dettagliata del perché non è riuscito.
corretto l'errore nel codice. Hai bisogno di sapere se questo è un modo giusto per testare? – Nemo
* Perché * vuoi * testare * la connettività? Cosa fai se il test fallisce? –
Sto scrivendo test di unità per i metodi di accesso db. Quindi, vogliamo estirpare il caso quando l'accesso al database fallisce. – Nemo