diff --git a/bin/service/web_services.py b/bin/service/web_services.py index a3280719f2c..ebd7f063d39 100644 --- a/bin/service/web_services.py +++ b/bin/service/web_services.py @@ -286,11 +286,8 @@ class db(netsvc.Service): return True def db_exist(self, db_name): - try: - db = sql_db.db_connect(db_name) - return True - except: - return False + ## Not True: in fact, check if connection to database is possible. The database may exists + return bool(sql_db.db_connect(db_name)) def list(self): db = sql_db.db_connect('template1') diff --git a/bin/sql_db.py b/bin/sql_db.py index 6d2d8b779ef..59d7bcaac1f 100644 --- a/bin/sql_db.py +++ b/bin/sql_db.py @@ -310,6 +310,15 @@ class Connection(object): def serialized_cursor(self): return self.cursor(True) + def __nonzero__(self): + """Check if connection is possible""" + try: + cr = self.cursor() + cr.close() + return True + except: + return False + _dsn = '' for p in ('host', 'port', 'user', 'password'):