pymongo :检查我们是否已连接到 MongoDB 数据库

Ash*_*yay 5 python django mongodb pymongo

client = MongoClient('localhost',27017)
db = client[DB_NAME]

def db_connect():
    #connecting to a DB in mongoDB
    try:
        if client.get_database(DB_NAME):
            print("Connection Successful!")
            return True
    except:
        print("Please check your connection")
        return False

def db_close():
    print ("Connection Getting Closed")
    client.close()
Run Code Online (Sandbox Code Playgroud)

我正在尝试完成一项任务,只有当 pymongo 存在连接时,才返回 True 以便函数可以继续,否则它应该返回 False 和一条检查连接的消息。这样我们就不再继续下去了。

我怎样才能实现这个目标?

编辑1:接受的解决方案

Successfully added user: {
"user" : "ash",
"roles" : [
    {
        "role" : "readWrite",
        "db" : "myDB"
    },
    "clusterAdmin"
]
Run Code Online (Sandbox Code Playgroud)

}

我使用上面的代码片段添加了一个用户,然后使用了以下脚本。

DB_NAME = "myDB"
client = MongoClient('localhost',27017)
db = client[DB_NAME]
def db_connect():
    #connecting to a DB in mongoDB
    try:
        if db.authenticate("ash","password"):
            print("Connection Successful!")
            return True
    except:
        print("Please check your connection")
        return False

def db_close():
    print ("Connection Getting Closed")
    client.close()

if __name__ == "__main__":
    db_connect()
    db_close()
Run Code Online (Sandbox Code Playgroud)

我已经使用此代码片段连接到我的数据库现在正在连接到数据库我的电脑中有数据库,我正在使用 Ubuntu 16.04。

ele*_*ena 1

无论如何,您可能必须authenticate在连接函数内使用该方法,因此您可以按以下方式执行此操作:

In [12]: client = MongoClient(DB_MACHINE, DB_PORT)
In [13]: db = client.db_name
In [16]: if db.authenticate(DB_USER, DB_PASS, source=DB_SOURCE):
             # authenticated, do ...
         else:
             # not authenticated, not connected, do something else
Run Code Online (Sandbox Code Playgroud)