作者:手机用户2502875603 | 来源:互联网 | 2023-05-25 12:44
我有一个从MongoDB返回数据库连接处理程序的函数.我有各种其他函数调用DB,我想让连接处理程序抛出一个函数,所以我不必在每个函数中定义它.
这看起来不错吗?我想我的问题是,如果它无法与数据库服务器建立连接,它将打印两条消息Could not connect to server
,No hosts found
我怎样才能打印"无法连接到服务器".
def mongodb_conn():
try:
cOnn= pymongo.MongoClient()
except pymongo.errors.ConnectionFailure, e:
print "Could not connect to server: %s" % e
return conn
def get_hosts()
try:
cOnn= mongodb_conn()
mOngodb= conn.dbname.collection
b = []
hosts_obj = mongodb.find({'_id': 'PR'})
for x in hosts_obj:
print x
except:
print "No hosts found"
get_hosts()
Martijn Piet..
11
将您的cOnn= mongodb_conn()
通话出了的try .. except
处理程序,测试,如果None
返回:
def get_hosts()
cOnn= mongodb_conn()
if conn is None:
# no connection, exit early
return
try:
mOngodb= conn.dbname.collection
b = []
hosts_obj = mongodb.find({'_id': 'PR'})
for x in hosts_obj:
print x
except:
print "No hosts found"
你应该不惜一切代价避免使用毯子except
; 你现在正在捕捉所有内容,包括内存错误和键盘中断,请参阅为什么"除了:传递"一个糟糕的编程习惯?
仅使用特定的例外; 您可以使用一个except
语句来捕获多个异常类型:
except (AttributeError, pymongo.errors.OperationFailure):
或者您可以使用多个except
语句以不同的方式处理不同的异常.
将异常处理程序限制为可以抛出异常的代码部分.for x in hosts_obj:
例如,循环可能不会抛出AttributeError
异常,因此它可能不应该是try
块的一部分.
请注意,如果从未设置过,您需要调整mongodb_conn()
函数以不尝试使用conn
本地函数; UnboundLocal
如果你这样做,你会收到错误:
def mongodb_conn():
try:
return pymongo.MongoClient()
except pymongo.errors.ConnectionFailure, e:
print "Could not connect to server: %s" % e
None
如果连接失败,该函数如果成功则返回连接.
1> Martijn Piet..:
将您的cOnn= mongodb_conn()
通话出了的try .. except
处理程序,测试,如果None
返回:
def get_hosts()
cOnn= mongodb_conn()
if conn is None:
# no connection, exit early
return
try:
mOngodb= conn.dbname.collection
b = []
hosts_obj = mongodb.find({'_id': 'PR'})
for x in hosts_obj:
print x
except:
print "No hosts found"
你应该不惜一切代价避免使用毯子except
; 你现在正在捕捉所有内容,包括内存错误和键盘中断,请参阅为什么"除了:传递"一个糟糕的编程习惯?
仅使用特定的例外; 您可以使用一个except
语句来捕获多个异常类型:
except (AttributeError, pymongo.errors.OperationFailure):
或者您可以使用多个except
语句以不同的方式处理不同的异常.
将异常处理程序限制为可以抛出异常的代码部分.for x in hosts_obj:
例如,循环可能不会抛出AttributeError
异常,因此它可能不应该是try
块的一部分.
请注意,如果从未设置过,您需要调整mongodb_conn()
函数以不尝试使用conn
本地函数; UnboundLocal
如果你这样做,你会收到错误:
def mongodb_conn():
try:
return pymongo.MongoClient()
except pymongo.errors.ConnectionFailure, e:
print "Could not connect to server: %s" % e
None
如果连接失败,该函数如果成功则返回连接.