基于类的Python Mongo包装器

时间:2017-03-16 19:05:24

标签: python pymongo

我正在寻找一个基于类的包装器来在python中创建mongo连接并执行几个操作。我开始编写一些代码,但考虑是否有任何现有的包装器可用于类似的需求。

class MongoDbConn:

    def __init__(self):
        self.settings_mongo = {
            'username': DB_USERID_MONGO,
            'password': DB_PASSWORD_MONGO,
            'host': DB_HOST_MONGO + ":" + DB_PORT_MONGO,
            'database': DB_AUTH_NM_MONGO
        }
        self.mongo_client =\
            MongoClient("mongodb://{username}:{password}@"
                        "{host}/?authSource={database}".format(
                            **self.settings_mongo))

    def execute_operation(self, db_name, collection_name, query,
                          operation):
        assert operation in ["find", "find_one", "distinct"]
        db = self.mongo_client[db_name]
        collection = db[collection_name]
        rs = getattr(collection, operation)(query)
        return rs

    def find_one(self, db_name, collection_name, query):
        return self.execute_operation(self, db_name, collection_name, query,
                                      operation="find_one")

    def find(self, db_name, collection_name, query):
        TODO

    def delete(self, db_name, collection_name, query):
        TODO

    def ensure_index_if_not_exist(self, db_name, collection_name, query):
        TODO

    def distinct(self, db_name, collection_name, query):
        TODO

    def insert(self, db_name, collection_name, query):
        TODO

    def update(self, db_name, collection_name, query):
        TODO

因此,在上面的例子中,我正在寻找一个与上面相同的通用库

1 个答案:

答案 0 :(得分:1)

我不明白您的代码提供了哪些好处。它更复杂,可能比直接使用PyMongo慢一点,但除此之外我看不到多少优势。只需使用PyMongo。

如果您正在寻找与MongoDB更高级别的Python接口,请考虑PyMODM,它在Python对象和MongoDB文档之间进行转换,有点像Django ORM对SQL行的转换。