将客户端和数据库连接放在 python 文件中的什么位置
Where to put client and db connection in python file
所以我正在构建一个 mongo 数据库 class,它将提供向插入服务插入文档的访问权限,并提供通过查询服务查看文档的访问权限。现在我的 database.py class 有以下内容:
import pymongo
client = pymongo.MongoClient('mongodb://localhost:27017/')
db_connection = client['my_database']
class DB_Object(object):
""" A class providing structure and access to the Database """
def add_document(self, json_obj):
coll = db_connection["some collection"]
document = {
"name" : "imma name",
"raw value" : 777,
"converted value" : 333
}
coll.insert(document)
def query_response(self, query):
"""query logic here"""
如果我想要并发查询和插入,并且这个 class 被多个服务调用,这行的正确位置是:
client = pymongo.MongoClient('mongodb://localhost:27017/')
db_connection = client['my_database']
这是提供访问权限的标准方式吗?
您的代码是正确的。您应该继续对应用程序中的所有操作使用相同的 MongoClient 实例,这将确保所有操作共享相同的连接池并使用尽可能少的连接——这将最大限度地提高您的效率。 MongoClient 是线程安全的,因此即使您在多个线程上有并发操作,它也能正常工作。
所以我正在构建一个 mongo 数据库 class,它将提供向插入服务插入文档的访问权限,并提供通过查询服务查看文档的访问权限。现在我的 database.py class 有以下内容:
import pymongo
client = pymongo.MongoClient('mongodb://localhost:27017/')
db_connection = client['my_database']
class DB_Object(object):
""" A class providing structure and access to the Database """
def add_document(self, json_obj):
coll = db_connection["some collection"]
document = {
"name" : "imma name",
"raw value" : 777,
"converted value" : 333
}
coll.insert(document)
def query_response(self, query):
"""query logic here"""
如果我想要并发查询和插入,并且这个 class 被多个服务调用,这行的正确位置是:
client = pymongo.MongoClient('mongodb://localhost:27017/')
db_connection = client['my_database']
这是提供访问权限的标准方式吗?
您的代码是正确的。您应该继续对应用程序中的所有操作使用相同的 MongoClient 实例,这将确保所有操作共享相同的连接池并使用尽可能少的连接——这将最大限度地提高您的效率。 MongoClient 是线程安全的,因此即使您在多个线程上有并发操作,它也能正常工作。