MongoDB连接

class MongoDBHandler(settings_dict, displayed_mongo_url, _client, _db_name, _db, _coll_name, _coll)
该类实现对MongoDB数据库提供一个对外接口类,其内部封装了数据库的常用操作,用户只要按需传入指定参数即可实现功能。
参数:settings_dict (dict) – 包含数据配置的字典。包含数据配置的字典,包含如 HOST (要连接的数据库的主机地址),PORT (端口),USER (用户名) , PASSWORD (用户密码)
coll_source = 'Source'

定义原始数据表名称

coll_result = 'Result'

定义结果(标注后)数据表名称

__del__()

该方法实现断开数据库连接

__connect()

该方法通过调用 __get_mongo_url 得到数据库地址来实现数据连接,返回MongoDB客户端对象

__get_mongo_url(settings_dict)
参数:settings_dict (dict) – 数据库配置信息

该方法通过输入的数据配置参数返回数据库连接url

__get_displayed_url(settings_dict)
参数:settings_dict (dict) – 数据库配置信息

该方法返回一个将用户密码注释的数据库连接地址

db()

@property

该方法返回数据库对象,如果不存在则报错

set_database(db_name)
参数:db_name (str) – 数据库名称

该方法用来新建数据库及设置数据库名称

coll()

@property

该方法返回数据表对象,如果不存在则报错

set_collection(coll_name)
参数:coll_name (str) – 数据表名称

该方法用来新建数据表及设置数据表名称

execute(coll_name, operator)
参数:
  • coll_name (str) – 数据表名称
  • operator (function) – 执行sql操作函数的函数体

该方法根据输入的数据表名称创建数据表并调用主体的内部函数体 _operator 执行数据库操作,返回执行结果,若尝试重连次数超过指定次数则抛错。

fetch(coll_name, filter=None, *args, **kwargs)
参数:
  • coll_name (str) – 数据表名称
  • filter (dict) – 条件字段
  • args (str) – 位置参数
  • kwargs (dict) – 关键字参数
def _operator():
        documents = []
        for doc in self.coll.find(filter, *args, **kwargs):
            documents.append(doc)
        return documents

该方法将其内部函数体 _operator() 及传入的数据表名称作为参数,调用方法 excute() 实现从数据库拉取数据的操作

fetch_source(filter=None, *args, **kwargs)
参数:
  • filter (dict) – 条件字段
  • args (str) – 位置参数
  • kwargs (dict) – 关键字参数

该方法调用 fetch 返回指定表 coll_source 的表中查询指定的filter字段的结果

fetch_result(filter=None, *args, **kwargs)
参数:
  • filter (dict) – 条件字段
  • args (str) – 位置参数
  • kwargs (dict) – 关键字参数

该方法调用 fetch 返回指定表 coll_result 的表中查询指定的filter字段的结果

insert(coll_name, documents, **kwargs)
参数:
  • coll_name (str) – 数据表名称
  • documents (dic) – 要写入数据表的数据
  • kwargs (dict) – 关键字参数
def _operator():
        return self.coll.insert_many(documents, **kwargs)

该方法将其内部函数体 _operator() 及传入的数据表名称作为参数,调用方法 excute() 实现数据库的批量写入操作。

update(coll_name,filter, documents, **kwargs)
参数:
  • coll_name (str) – 数据表名称
  • filter (dict) – 条件字段
  • documents (dic) – 要写入数据表的数据
  • kwargs (dict) – 关键字参数
def _operator():
        return self.coll.update_many(filter,{'$set': document},**kwargs)

该方法将其内部函数体 _operator() 及传入的数据表名称作为参数,调用方法 excute() 实现数据库指定字段的批量更新操作。

close()

该方法实现断开数据库连接的操作