Python中,常用Selenium方法封装(4)

封装了读取 MongoDB 数据库的方法


class MongodbConnect:

    def __init__(self,mongo_host,mongo_port,database,collection,user,pwd):
        """
        建立数据库连接
        (有认证方式 & 无认证方式 )
        :param mongo_host: MongoDB服务器IP
        :param mongo_port: MongoDB服务器端口
        :param database:   MongoDB数据库
        :param collection: MongoDB集合(表)
        :param user: (有认证方式,默认授权admin数据库)用户名
        :param pwd: (有认证方式,默认授权admin数据库)密码
        """

        mongo_host = mongo_host
        mongo_port = mongo_port
        self.client = pymongo.MongoClient('%s:%d' % (mongo_host, mongo_port))
        # 连接到数据库myDatabase
        database = database
        db = self.client[database]
        # 连接到集合(表):database.collection
        collection = collection
        self.db_col = db[collection]
        # mongoDB有不同的认证机制,3.0版本以后采用的是’SCRAM-SHA-1’, 之前的版本采用的是’MONGODB-CR’
        # user,pwd,针对的是 admin 数据库的认证
        if user != None and pwd != None:
            self.client.admin.authenticate(user, pwd, mechanism='SCRAM-SHA-1')

    def query(self,query_args):
        '''
        根据查询参数,返回查询结果
        :param q_find: MongoDB查询参数—find-查找
        :param q_sort: MongoDB查询参数—sort-排序,无此参数时,则输入为 None
        :param q_limit: MongoDB查询参数—limit-前几条,无此参数时,则输入为 None
        :param q_skip: MongoDB查询参数—skip-跳过第几条,无此参数时,则输入为 None
        :return: 数据库查询结果,字典形式
        '''
        try:
            # 字符串方式连接
            # a1 = ["db_col", "find({}, {'by_user': 1})", "sort('likes', -1)", "limit(2)"]
            # b1 = '.'.join(a1)
            # print(b1)

            if query_args['q_find'] != None and query_args['q_sort'] == None and query_args['q_limit'] == None and query_args['q_skip'] == None:
                self.search_result = self.db_col.find(*query_args['q_find'])
            elif query_args['q_find'] != None and query_args['q_sort'] != None and query_args['q_limit'] == None and query_args['q_skip'] == None:
                self.search_result = self.db_col.find(*query_args['q_find']).sort(*query_args['q_sort'])
            elif query_args['q_find'] != None and query_args['q_sort'] == None and query_args['q_limit'] != None and query_args['q_skip'] == None:
                self.search_result = self.db_col.find(*query_args['q_find']).limit(query_args['q_limit'])
            elif query_args['q_find'] != None and query_args['q_sort'] == None and query_args['q_limit'] != None and query_args['q_skip'] != None:
                self.search_result = self.db_col.find(*query_args['q_find']).limit(query_args['q_limit']).skip(query_args['q_skip'])
            elif query_args['q_find'] != None and query_args['q_sort'] != None and query_args['q_limit'] != None and query_args['q_skip'] == None:
                self.search_result = self.db_col.find(*query_args['q_find']).sort(*query_args['q_sort']).limit(query_args['q_limit'])
            elif query_args['q_find'] != None and query_args['q_sort'] != None and query_args['q_limit'] != None and query_args['q_skip'] != None:
                self.search_result = self.db_col.find(*query_args['q_find']).sort(*query_args['q_sort']).limit(query_args['q_limit']).skip(query_args['q_skip'])
            else:
                raise NameError("查询条件输入错误!")
            return self.search_result

        except:
            raise NameError('MongoDB认证方式,数据库查询失败!')

    def close(self):
        """关闭数据库连接,释放资源"""
        self.client.close()
        self.search_result.close()

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 关于Mongodb的全面总结 MongoDB的内部构造《MongoDB The Definitive Guide》...
    中v中阅读 32,153评论 2 89
  • 1、通过CocoaPods安装项目名称项目信息 AFNetworking网络请求组件 FMDB本地数据库组件 SD...
    阳明AI阅读 16,053评论 3 119
  • 步骤 详细步骤:《如何快速正确的安装 Ruby, Rails 运行环境》 https://get.rvm.io有时...
    诸司马计阅读 4,786评论 0 1
  • 说到陈列很多人头疼,很多人迷茫,又有很多人不以为意。有一部分人可能觉得陈列不就是把东西摆到显眼位置,不管好的...
    张惠惠betty阅读 3,414评论 5 1
  • 文/周晨曦 小时候听母亲讲,有人给我算过命,说我是“松柏木”命,要有“水”的浇灌才能四季长青,永远充满活力...
    朔方吴人阅读 3,262评论 0 3

友情链接更多精彩内容