私は間違っている(またはあなたの質問を誤解しています:))、私は接続関連の例外がMySQLdb.connect()
にスローされると信じています。 MySQLdbでは、キャッチする例外はMySQLdb.Error
です。したがって、ブロック内にdb
設定を移動し、適切な例外(MySQLdb.Error
)を取得することをお勧めします。 @JohnMeeは言及しても、結果がない場合fetchone()
はNoneを返しますので、これは動作するはずです:
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
あなたが接続を気にしないし、ちょうどクエリの実行をテストするために探している場合は、私は次の、おそらくとして、あなたはtry
外の接続設定を残すことができると思いますが、あなたの例外でMySQLdb.Error
を含める:
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
これは、少なくともあなたにそれが失敗した理由のより詳細な理由を与えるだろう。
コードのエラーを修正しました。これが正しい方法であるかどうかを知る必要がありますか? – Nemo
*なぜ*テスト*接続したいですか?テストに失敗したらどうしますか? –
私はdbアクセスメソッドのためのユニットテストケースを書いています。したがって、データベースへのアクセスが失敗した場合は除外したい。 – Nemo