HiveNetNoSql.base.driver_fw module

nosql数据库驱动基础框架

注: 实现类可以通过bson库的objectid模块自动生成与mongodb匹配的ObjectID

class HiveNetNoSql.base.driver_fw.NosqlAIOPoolDriver(connect_config: dict = {}, pool_config: dict = {}, driver_config: dict = {})[源代码]

基类:NosqlDriverFW

nosql数据库驱动使用关系型数据库连接池AIOConnectionPool的基础类

可以尝试整合的异步数据库驱动包括: asyncpg, aiopg, aiomysql, asyncmy, aiosqlite 为兼容mongodb的数据存储, 数据表的设计统一为(以集合名t_demo为例): t_demo(_id varchar, …其他固定索引字段, nosql_driver_extend_tags json)

_id为唯一主键, 可通过bson库的objectid模块自动生成 固定字段, 可用于查询条件的字段, 注意对顺序并无要求 nosql_driver_extend_tags, 存放其他扩展信息的字段(尽可能使用支持json的数据库类型, 以支持查询和更新等操作)

注: 对于原生数据库驱动没有连接池管理情况, 建议基于本基础类实现, 无需自行处理连接池的功能

__init__(connect_config: dict = {}, pool_config: dict = {}, driver_config: dict = {})[源代码]

初始化驱动

参数
  • connect_config (dict) –

    default={}, 数据库的连接参数

    host {str} - 连接数据库的ip或uri, 如果使用uri方式, 其他的连接参数不生效

    port {int} - 连接数据库的端口(可选)

    usedb {str} - 登录后默认切换到的数据库(可选), 如果不传使用登录后的默认数据库

    username {str} - 登录验证用户(可选)

    password {str} - 登录验证密码(可选)

    dbname {str} - 登录用户的数据库名(可选)

    connect_on_init {bool} - 是否启动时直接连接数据库, 默认为False(等待第一次操作再连接)

    connect_timeout {float} - 连接数据库的超时时间, 单位为秒, 默认为20

    default_str_len {int} - 默认的字符串类型长度, 默认为30

    …驱动实现类自定义支持的参数

    transaction_share_cursor {bool} - 进行事务处理是否复用同一个游标对象, 默认为True

  • pool_config (dict) –

    default={}, 连接池配置

    max_size {int} - 连接池的最大大小, 默认为100

    min_size {int} - 连接池维持的最小连接数量, 默认为0

    max_idle_time {float} - 连接被移除前的最大空闲时间, 单位为秒, 默认为None

    wait_queue_timeout {float} - 在没有空闲连接的时候, 请求连接所等待的超时时间, 单位为秒, 默认为None(不超时)

    …驱动实现类自定义支持的参数

    注: 其他参数为AIOConnectionPool所支持的参数

  • driver_config (dict) –

    default={}, 驱动配置

    init_db {dict} - 要在启动驱动时创建的数据库

    {

    ‘数据库名’: {

    ‘index_only’: False, # 是否仅用于索引, 不创建

    ’comment’: ‘’, # 数据库注释

    ’args’: [], # 创建数据库的args参数

    ’kwargs’: {} #创建数据库的kwargs参数

    }

    }

    init_collections {dict} - 要在启动驱动时创建的集合(表)

    {

    ‘数据库名’: {

    ‘集合名’: {

    ‘index_only’: False, # 是否仅用于索引, 不创建

    ’comment’: ‘’, # 集合注释

    ’indexs’: {索引字典}, ‘fixed_col_define’: {固定字段定义}

    }

    },

    }

    init_yaml_file {str} - 要在启动时创建的数据库和集合(表)配置yaml文件

    注1: 该参数用于将init_db和init_collections参数内容放置的配置文件中, 如果参数有值则忽略前面两个参数

    注2: 配置文件为init_db和init_collections两个字典, 内容与这两个参数一致

    logger {Logger} - 传入驱动的日志对象

    ignore_index_error {bool} - 是否忽略索引创建的异常, 默认为True

    debug {bool} - 指定是否debug模式, 默认为False

async abort_transaction(session, *args, **kwargs)[源代码]

回滚事务

参数

session (Any) – default=None, 启动事务的连接(session)

classmethod cmp_func_equal_row(query_ret, cmp_val: dict) bool[源代码]

比较函数-与查询结果第1行结果比较字典

参数
  • query_ret (list) – 查询返回结果

  • cmp_val (dict) – 比较字典值

返回

比较结果(True代表通过)

返回类型

bool

classmethod cmp_func_equal_value(query_ret, cmp_val: Any) bool[源代码]

比较函数-与查询结果第1行第1个值与比较值相等

参数
  • query_ret (list) – 查询返回结果

  • cmp_val (Any) – 比较值

返回

比较结果(True代表通过)

返回类型

bool

classmethod cmp_func_gt_value(query_ret, cmp_val: Any) bool[源代码]

比较函数-查询结果第1行第1个值大于比较值

参数
  • query_ret (list) – 查询返回结果

  • cmp_val (Any) – 比较值

返回

比较结果(True代表通过)

返回类型

bool

classmethod cmp_func_lt_value(query_ret, cmp_val: Any) bool[源代码]

比较函数-查询结果第1行第1个值小于比较值

参数
  • query_ret (list) – 查询返回结果

  • cmp_val (Any) – 比较值

返回

比较结果(True代表通过)

返回类型

bool

async collections_exists(collection: str, *args, **kwargs) bool[源代码]

判断集合(表)是否存在

参数

collection (str) – 集合名(表名)

返回

是否存在

返回类型

bool

async commit_transaction(session, *args, **kwargs)[源代码]

提交事务

参数

session (Any) – default=None, 启动事务的连接(session)

async create_collection(collection: str, indexs: dict = None, fixed_col_define: dict = None, comment: str = None, **kwargs)[源代码]

创建集合(相当于关系型数据库的表, 如果不存在则创建)

注意: 所有集合都有必须有 ‘_id’ 这个记录的唯一主键字段

参数
  • collection (str) – 集合名(表名)

  • indexs (dict) –

    default=None, 要创建的索引字典, 格式为:

    {

    ‘索引名’: {

    # 索引的字段清单

    ’keys’: {

    ‘字段名’: { ‘asc’: 是否升序(1为升序, -1为降序) },

    }

    # 创建参数

    ’paras’: {

    ‘unique’: 是否唯一索引(True/False),

    …驱动实现类自定义支持的参数

    }

    },

    }

  • fixed_col_define (dict) –

    default=None, 固定字段定义(只有固定字段才能进行索引), 格式如下:

    {

    ‘字段名’: {

    ‘type’: ‘字段类型(str, int, float, bool, json)’,

    ’len’: 字段长度,

    ’nullable’: True, # 是否可空

    ’default’: 默认值,

    ’comment’: ‘字段注释’

    },

    }

  • comment (str) – default=None, 集合注释

  • 实现驱动自定义支持的参数 (-) –

async create_db(name: str, *args, **kwargs)[源代码]

创建数据库

注: 创建后会自动切换到该数据库

参数

name (str) – 数据库名

property db_name

返回当前数据库名 @property {str}

async delete(collection: str, filter: dict, multi: bool = True, hint: dict = None, session: Any = None, **kwargs) int[源代码]

删除指定记录

参数
  • collection (str) – 集合(表)

  • filter (dict) – 查询条件字典, 与mongodb的查询条件设置参数一致

  • multi (bool) – default=True, 是否删除全部找到的记录, 如果为Fasle只删除找到的第一条记录

  • hint (dict) – default=None, 指定查询使用索引的名字清单

  • session (Any) – default=None, 指定事务连接对象

  • partition (list|str) –

    default=None, MySQL, PostgreSQL专有参数, 指定操作的分区

    注: MySQL支持送入分区列表名, 例如(p1, s3); PostgreSQL仅支持送入单个分区后缀名, 例如’p1’

返回

删除记录数量

返回类型

int

async destroy()[源代码]

主动销毁驱动(连接)

async drop_collection(collection: str, *args, **kwargs)[源代码]

删除集合

注: 集合不存在也正常返回

参数

collection (str) – 集合名(表名)

async drop_db(name: str, *args, **kwargs)[源代码]

删除数据库

参数

name (str) – 数据库名

init_index_extend_collections(collections: dict)[源代码]

在初始化索引参数中扩展集合索引信息

参数

collections (dict) –

要扩展的集合信息字典(注: 仅用于索引, 不创建实际数据库)

{

‘数据库名’: {

‘集合名’: {

‘comment’: ‘’, # 集合注释

’indexs’: {索引字典}, ‘fixed_col_define’: {固定字段定义}, …

}

},

}

init_index_extend_dbs(dbs: dict)[源代码]

在初始化索引参数中扩展数据库索引信息

参数

dbs (dict) –

要扩展的数据库信息字典(注: 仅用于索引, 不创建实际数据库)

{

‘数据库名’: {

‘comment’: ‘’, # 数据库注释

’args’: [], # 创建数据库的args参数

’kwargs’: {} #创建数据库的kwargs参数

}

}

async insert_many(collection: str, rows: list, session: Any = None, **kwargs) int[源代码]

插入多条记录

参数
  • collection (str) – 集合(表)

  • rows (list) –

    行记录数组

    注: 每个记录可以通过’_id’字段指定该记录的唯一主键, 如果不送入, 将自动生成一个唯一主键

  • session (Any) – default=None, 指定事务连接对象

返回

返回插入的记录数量

返回类型

int

async insert_one(collection: str, row: dict, session: Any = None, **kwargs) str[源代码]

插入一条记录

参数
  • collection (str) – 集合(表)

  • row (dict) –

    行记录字典

    注: 每个记录可以通过’_id’字段指定该记录的唯一主键, 如果不送入, 将自动生成一个唯一主键

  • session (Any) – default=None, 指定事务连接对象

返回

返回所插入记录的 _id 字段值

返回类型

str

async list_collections(filter: dict = None, **kwargs) list[源代码]

获取所有集合(表)清单

参数

filter (dict) –

default=None, 查找条件

例如查找所有非’system.’开头的集合: {“name”: {“$regex”: r”^(?!system.)”}}

返回

集合(表)清单

返回类型

list

async list_dbs(*args, **kwargs) list[源代码]

列出数据库清单

返回

数据库名清单

返回类型

list

async query_count(collection: str, filter: dict = None, skip: int = None, limit: int = None, hint: dict = None, overtime: float = None, left_join: list = None, session: Any = None, **kwargs) int[源代码]

获取匹配查询条件的结果数量

参数
  • collection (str) – 集合(表)

  • filter (dict) – default=None, 查询条件字典, 与mongodb的查询条件设置方法一样,

  • skip (int) – default=None, 指定跳过返回结果的前面记录的数量

  • limit (int) – default=None, 指定限定返回结果记录的数量

  • hint (dict) – default=None, 指定查询使用索引的名字清单

  • overtime (float) – default=None, 指定操作的超时时间, 单位为秒

  • left_join (list) –

    default=None, 指定左关联(left outer join)集合信息, 每个数组为一个关联表, 格式如下:

    [

    {

    ‘db_name’: ‘指定集合的db’, # 如果不设置则代表和主表是同一个数据库

    ’collection’: ‘要关联的集合(表)名’,

    ’as’: ‘关联后的别名’, # 如果不设置默认为集合名

    ’join_fields’: [(主表字段名, 关联表字段名), …], # 要关联的字段列表, 仅支持完全相等的关联条件

    ’filter’: …, # 关联表数据的过滤条件(仅用于内部过滤需要关联的数据), 注意字段无需添加集合的别名

    },

    ]

  • session (Any) – default=None, 指定事务连接对象

  • partition (list|str) –

    default=None, MySQL, PostgreSQL专有参数, 指定操作的分区

    注: MySQL支持送入分区列表名, 例如(p1, s3); PostgreSQL仅支持送入单个分区后缀名, 例如’p1’

返回

返回查询条件匹配的记录数

返回类型

int

async query_group_by(collection: str, group: dict = None, filter: dict = None, projection: Union[dict, list] = None, sort: list = None, overtime: float = None, session: Any = None, **kwargs) list[源代码]

获取记录聚合统计的结果

参数
  • collection (str) – 集合(表)

  • group (dict) –

    default=None, 分组返回设置字典(注意与mongodb的_id要求有所区别)

    指定分组字段为col1、col2, 聚合字段为count、pay_amt, 其中pay_amt统计col_pay字段的合计数值

    {‘id’: ‘$col1’, ‘name’: ‘$col2’, ‘count’: {‘$sum’: 1}, ‘pay_amt’: {‘$sum’: ‘$col_pay’}}

    常见的聚合类型: $sum-计算总和, $avg-计算平均值, $min-取最小值, $max-取最大值, $first-取第一条, $last-取最后一条

  • filter (dict) – default=None, 查询条件字典, 与mongodb的查询条件设置方法一样

  • projection (dict|list) – default=None, 指定结果返回的字段信息(指统计后的结果)

  • sort (list) – default=None, 查询结果的排序方式(注意排序字段为返回结果的分组字段, 而不是表的原始字段)

  • overtime (float) – default=None, 指定操作的超时时间, 单位为秒

  • session (Any) – default=None, 指定事务连接对象

  • partition (list|str) –

    default=None, MySQL, PostgreSQL专有参数, 指定操作的分区

    注: MySQL支持送入分区列表名, 例如(p1, s3); PostgreSQL仅支持送入单个分区后缀名, 例如’p1’

返回

返回结果列表

返回类型

list

async query_iter(collection: str, filter: dict = None, projection: Union[dict, list] = None, sort: list = None, skip: int = None, limit: int = None, hint: dict = None, left_join: list = None, fetch_each: int = 1, session: Any = None, **kwargs)[源代码]

查询记录(通过迭代对象依次返回)

参数
  • collection (str) – 集合(表)

  • filter (dict) –

    default=None, 查询条件字典, 与mongodb的查询条件设置方法一样, 参考如下:

    {} : 查询全部记录

    {‘id’: ‘info’, ‘ver’: ‘0.0.1’} : where id = ‘info’ and ‘ver’ = ‘0.0.1’

    {‘ver’: {$lt: ‘0.0.1’}} : where ver < ‘0.0.1’

    注: $lt - 小于, $lte - 小于或等于, $gt - 大于, $gte - 大于或等于, $ne - 不等于

    {‘id’: {$gt:50}, $or: [{‘name’: ‘lhj’},{‘title’: ‘book’}]} :

    where id > 50 and (name=’lhj’ or ‘title’ = ‘book’)

    {‘name’: {‘$regex’: ‘likestr’}} : where name like ‘%likestr%’, 正则表达式

    {‘name’: {‘$in’: [‘a’, ‘b’, ‘c’]}} : where name in (‘a’, ‘b’, ‘c’)

    {‘name’: {‘$nin’: [‘a’, ‘b’, ‘c’]}} : where name not in (‘a’, ‘b’, ‘c’)

    {‘col_json.sub_col’: ‘test’}: 查询json字段的指定字典key, 可以支持多级

    {‘col_json.0’: ‘test’}: 查询json字段的指定数组索引, 可以支持多级

    注: 可以在字段名前面加 “#序号.” 用于与left_join参数配合使用, 指定当前排序字段所属的关联表索引(序号从0开始)

  • projection (dict|list) –

    default=None, 指定结果返回的字段信息

    列表模式: [‘col1’,’col2’, …] 注意: 该模式一定会返回 _id 这个主键

    字典模式: {‘_id’: False, ‘col1’: True, …} 该方式可以通过设置False屏蔽 _id 的返回

    注1: 只有 _id 字段可以设置为False, 其他字段不可设置为False(如果要屏蔽可以不放入字典)

    注2: 可以通过字典模式的值设置为$开头的字段名或json检索路径的方式, 进行字段别名处理, 例如{‘as_name’: ‘$real_name’}或{‘as_name’: ‘$real_name.key.key’}

    注3: 可以在字段名前面加 “#序号.” 用于与left_join参数配合使用, 指定当前排序字段所属的关联表索引(序号从0开始), 例如{‘#0.col1’: True, ‘as_name’: ‘$#0.col2’}

  • sort (list) –

    default=None, 查询结果的排序方式

    例: [(‘col1’, 1), (‘#0.join_col1’, -1)…]

    注1: 参数的第1个值可以支持’col1.key1’的方式指定json值进行排序

    注2: 参数的第2个值指定是否升序(1为升序, -1为降序)

    注3: 可以在字段名前面加 “#序号.” 用于与left_join参数配合使用, 指定当前排序字段所属的关联表索引(序号从0开始)

  • skip (int) – default=None, 指定跳过返回结果的前面记录的数量

  • limit (int) – default=None, 指定限定返回结果记录的数量

  • hint (dict) –

    default=None, 指定查询使用索引的名字清单

    例: {‘index_name1’: 1, ‘index_name2’: 1}

  • fetch_each (int) – default=1, 每次获取返回的记录数量

  • left_join (list) –

    default=None, 指定左关联(left outer join)集合信息, 每个数组为一个关联表, 格式如下:

    [

    {

    ‘db_name’: ‘指定集合的db’, # 如果不设置则代表和主表是同一个数据库

    ’collection’: ‘要关联的集合(表)名’,

    ’as’: ‘关联后的别名’, # 如果不设置默认为集合名

    ’join_fields’: [(主表字段名, 关联表字段名), …], # 要关联的字段列表, 仅支持完全相等的关联条件

    ’filter’: …, # 关联表数据的过滤条件(仅用于内部过滤需要关联的数据), 注意字段无需添加集合的别名

    },

    ]

  • session (Any) – default=None, 指定事务连接对象

  • partition (list|str) –

    default=None, MySQL, PostgreSQL专有参数, 指定操作的分区

    注: MySQL支持送入分区列表名, 例如(p1, s3); PostgreSQL仅支持送入单个分区后缀名, 例如’p1’

返回

返回的结果列表迭代器

返回类型

list

async query_list(collection: str, filter: dict = None, projection: Union[dict, list] = None, sort: list = None, skip: int = None, limit: int = None, hint: dict = None, left_join: list = None, session: Any = None, **kwargs) list[源代码]

查询记录(直接返回清单)

参数
  • collection (str) – 集合(表)

  • filter (dict) –

    default=None, 查询条件字典, 与mongodb的查询条件设置方法一样, 参考如下:

    {} : 查询全部记录

    {‘id’: ‘info’, ‘ver’: ‘0.0.1’} : where id = ‘info’ and ‘ver’ = ‘0.0.1’

    {‘ver’: {‘$lt’: ‘0.0.1’}} : where ver < ‘0.0.1’

    注: $lt - 小于, $lte - 小于或等于, $gt - 大于, $gte - 大于或等于, $ne - 不等于

    {‘id’: {‘$gt’:50}, ‘$or’: [{‘name’: ‘lhj’},{‘title’: ‘book’}]} :

    where id > 50 and (name=’lhj’ or ‘title’ = ‘book’)

    {‘name’: {‘$regex’: ‘likestr’}} : where name like ‘%likestr%’, 正则表达式

    {‘name’: {‘$in’: [‘a’, ‘b’, ‘c’]}} : where name in (‘a’, ‘b’, ‘c’)

    {‘name’: {‘$nin’: [‘a’, ‘b’, ‘c’]}} : where name not in (‘a’, ‘b’, ‘c’)

    {‘col_json.sub_col’: ‘test’}: 查询json字段的指定字典key, 可以支持多级

    {‘col_json.0’: ‘test’}: 查询json字段的指定数组索引, 可以支持多级

    注: 可以在字段名前面加 “#序号.” 用于与left_join参数配合使用, 指定当前排序字段所属的关联表索引(序号从0开始)

  • projection (dict|list) –

    default=None, 指定结果返回的字段信息

    列表模式: [‘col1’,’col2’, …] 注意: 该模式一定会返回 _id 这个主键

    字典模式: {‘_id’: False, ‘col1’: True, …} 该方式可以通过设置False屏蔽 _id 的返回

    注1: 只有 _id 字段可以设置为False, 其他字段不可设置为False(如果要屏蔽可以不放入字典)

    注2: 可以通过字典模式的值设置为$开头的字段名或json检索路径的方式, 进行字段别名处理, 例如{‘as_name’: ‘$real_name’}或{‘as_name’: ‘$real_name.key.key’}

    注3: 可以在字段名前面加 “#序号.” 用于与left_join参数配合使用, 指定当前排序字段所属的关联表索引(序号从0开始), 例如{‘#0.col1’: True, ‘as_name’: ‘$#0.col2’}

  • sort (list) –

    default=None, 查询结果的排序方式

    例: [(‘col1’, 1), (‘#0.join_col1’, -1)…]

    注1: 参数的第1个值可以支持’col1.key1’的方式指定json值进行排序

    注2: 参数的第2个值指定是否升序(1为升序, -1为降序)

    注3: 可以在字段名前面加 “#序号.” 用于与left_join参数配合使用, 指定当前排序字段所属的关联表索引(序号从0开始)

  • skip (int) – default=None, 指定跳过返回结果的前面记录的数量

  • limit (int) – default=None, 指定限定返回结果记录的数量

  • hint (dict) –

    default=None, 指定查询使用索引的名字清单

    例: {‘index_name1’: 1, ‘index_name2’: 1}

  • left_join (list) –

    default=None, 指定左关联(left outer join)集合信息, 每个数组为一个关联表, 格式如下:

    [

    {

    ‘db_name’: ‘指定集合的db’, # 如果不设置则代表和主表是同一个数据库

    ’collection’: ‘要关联的集合(表)名’,

    ’as’: ‘关联后的别名’, # 如果不设置默认为集合名

    ’join_fields’: [(主表字段名, 关联表字段名), …], # 要关联的字段列表, 仅支持完全相等的关联条件

    ’filter’: …, # 关联表数据的过滤条件(仅用于内部过滤需要关联的数据), 注意字段无需添加集合的别名

    },

    ]

  • session (Any) – default=None, 指定事务连接对象

  • partition (list|str) –

    default=None, MySQL, PostgreSQL专有参数, 指定操作的分区

    注: MySQL支持送入分区列表名, 例如(p1, s3); PostgreSQL仅支持送入单个分区后缀名, 例如’p1’

返回

返回的结果列表

返回类型

list

async run_native_cmd(sql: str, paras: tuple = None, is_query: bool = True, conn: Any = None, cursor: Any = None, commit_on_finished: bool = True, rollback_on_exception: bool = True, close_cursor: bool = False, close_conn: bool = False, **kwargs)[源代码]

执行原生命令(或SQL)并返回执行结果

注: 该函数不支持驱动的兼容处理

参数
  • sql (str) – 要执行的SQL语句

  • paras (tuple) – default=None, 传入的SQL参数字典(支持?占位)

  • is_query (bool) – default=True, 指定语句是否查询

  • conn (Any) – default=None, 传入的已打开连接, 如果传入代表纳入事务处理

  • cursor (Any) – default=None, 传入的已有游标, 不传入将自动创建新游标, 如果传入该值必须也传入conn

  • commit_on_finished (bool) – default=True, 完成处理时是否执行commit操作

  • rollback_on_exception (bool) – default=True, 出现异常时是否执行rollback操作

  • close_cursor (bool) – default=False, 是否关闭所传入的游标

  • close_conn (bool) – default=False, 是否关闭所传入的连接

返回

返回结果, 不同情况返回如下:

非查询语句: 返回当前语句影响的记录数量, 如果无记录情况返回None

一次性获取的查询语句: 返回行记录转换为字典形式的list列表

返回类型

int

async start_transaction(*args, **kwargs) Any[源代码]

启动事务

注: 通过该方法处理事务, 必须显式通过commit_transaction或abort_transaction关闭事务

返回

返回事务所在的连接(session)

返回类型

Any

async switch_db(name: str, *args, **kwargs)[源代码]

切换当前数据库到指定数据库

参数

name (str) – 数据库名

async turncate_collection(collection: str, *args, **kwargs)[源代码]

清空集合记录

参数

collection (str) – 集合名(表名)

async update(collection: str, filter: dict, update: dict, multi: bool = True, upsert: bool = False, hint: dict = None, session: Any = None, **kwargs) int[源代码]

更新找到的记录

参数
  • collection (str) – 集合(表)

  • filter (dict) – 查询条件字典, 与mongodb的查询条件设置参数一致

  • update (dict) –

    更新信息字典, 与mongodb的更新设置参数一致, 参考如下:

    {‘$set’: {‘name’: ‘myname’, …}}: name=’myname’, 设置某个字段的值

    {‘$inc’: {‘age’: 3, …}} : age = age + 3, 对数字类型字段, 在现有值上增加指定数值

    {‘$mul’: {‘age’: 2, …}} : age = age * 2, 对数字类型字段, 在现有值上乘以指定数值

    {‘$min’: {‘age’: 10, …}} : age = min(age, 10), 将现有值和给出值比较, 设置为小的值

    {‘$max’: {‘age’: 10, …}} : age = max(age, 10), 将现有值和给出值比较, 设置为大的值

    注: min和max当遇到字段不存在或为null时, 则直接设置为比较值

    {‘$unset’: {‘job’: 1}}: job=null, 删除指定字段

    {‘$rename’: {‘old_name’: ‘new_name’, …}}: 将字段名修改为新字段名

  • multi (bool) – default=True, 是否更新全部找到的记录, 如果为Fasle只更新找到的第一条记录

  • upsert (bool) – default=False, 指定如果记录不存在是否插入

  • hint (dict) – default=None, 指定查询使用索引的名字清单

  • session (Any) – default=None, 指定事务连接对象

  • partition (list|str) –

    default=None, MySQL, PostgreSQL专有参数, 指定操作的分区

    注: MySQL支持送入分区列表名, 例如(p1, s3); PostgreSQL仅支持送入单个分区后缀名, 例如’p1’

返回

返回更新的数据条数

返回类型

int

class HiveNetNoSql.base.driver_fw.NosqlDriverFW(connect_config: dict = {}, pool_config: dict = {}, driver_config: dict = {})[源代码]

基类:object

nosql数据库驱动框架

__init__(connect_config: dict = {}, pool_config: dict = {}, driver_config: dict = {})[源代码]

初始化驱动

参数
  • connect_config (dict) –

    default={}, 数据库的连接参数

    host {str} - 连接数据库的ip或uri, 如果使用uri方式, 其他的连接参数不生效

    port {int} - 连接数据库的端口(可选)

    usedb {str} - 登录后默认切换到的数据库(可选), 如果不传使用登录后的默认数据库

    username {str} - 登录验证用户(可选)

    password {str} - 登录验证密码(可选)

    dbname {str} - 登录用户的数据库名(可选)

    connect_on_init {bool} - 是否启动时直接连接数据库, 默认为False(等待第一次操作再连接)

    connect_timeout {float} - 连接数据库的超时时间, 单位为秒, 默认为20

    …驱动实现类自定义支持的参数

  • pool_config (dict) –

    default={}, 连接池配置

    max_size {int} - 连接池的最大大小, 默认为100

    min_size {int} - 连接池维持的最小连接数量, 默认为0

    max_idle_time {float} - 连接被移除前的最大空闲时间, 单位为秒, 默认为None

    wait_queue_timeout {float} - 在没有空闲连接的时候, 请求连接所等待的超时时间, 单位为秒, 默认为None(不超时)

    …驱动实现类自定义支持的参数

  • driver_config (dict) –

    default={}, 驱动配置

    init_db {dict} - 要在启动驱动时创建的数据库

    {

    ‘数据库名’: {

    ‘index_only’: False, # 是否仅用于索引, 不创建

    ’comment’: ‘’, # 数据库注释

    ’args’: [], # 创建数据库的args参数

    ’kwargs’: {} #创建数据库的kwargs参数

    },

    }

    init_collections {dict} - 要在启动驱动时创建的集合(表)

    {

    ‘数据库名’: {

    ‘集合名’: {

    ‘index_only’: False, # 是否仅用于索引, 不创建

    ’comment’: ‘’, # 集合注释

    ’indexs’: {索引字典}, ‘fixed_col_define’: {固定字段定义}

    },

    },

    }

    init_yaml_file {str} - 要在启动时创建的数据库和集合(表)配置yaml文件

    注1: 该参数用于将init_db和init_collections参数内容放置的配置文件中, 如果参数有值则忽略前面两个参数

    注2: 配置文件为init_db和init_collections两个字典, 内容与这两个参数一致

    logger {Logger} - 传入驱动的日志对象

async abort_transaction(session, *args, **kwargs)[源代码]

回滚事务

参数

session (Any) – default=None, 启动事务的连接(session)

async collections_exists(collection: str, *args, **kwargs) bool[源代码]

判断集合(表)是否存在

参数

collection (str) – 集合名(表名)

返回

是否存在

返回类型

bool

async commit_transaction(session, *args, **kwargs)[源代码]

提交事务

参数

session (Any) – default=None, 启动事务的连接(session)

async create_collection(collection: str, indexs: dict = None, fixed_col_define: dict = None, comment: str = None, **kwargs)[源代码]

创建集合(相当于关系型数据库的表, 如果不存在则创建)

注意: 所有集合都有必须有 ‘_id’ 这个记录的唯一主键字段

参数
  • collection (str) – 集合名(表名)

  • indexs (dict) –

    default=None, 要创建的索引字典, 格式为:

    {

    ‘索引名’: {

    # 索引的字段清单

    ’keys’: {

    ‘字段名’: { ‘asc’: 是否升序(1为升序, -1为降序) },

    }

    # 创建参数

    ’paras’: {

    ‘unique’: 是否唯一索引(True/False),

    …启动实现类自定义支持的参数

    }

    },

    }

  • fixed_col_define (dict) –

    default=None, 固定字段定义(只有固定字段才能进行索引), 格式如下:

    {

    ‘字段名’: {

    ‘type’: ‘字段类型(str, int, float, bool, json)’,

    ’len’: 字段长度,

    ’nullable’: True, # 是否可空

    ’default’: 默认值,

    ’comment’: ‘字段注释’

    },

    }

  • comment (str) – default=None, 集合注释

  • 实现驱动自定义支持的参数 (-) –

async create_db(name: str, *args, **kwargs)[源代码]

创建数据库

注: 创建后会自动切换到该数据库

参数

name (str) – 数据库名

property db_name

返回当前数据库名 @property {str}

async delete(collection: str, filter: dict, multi: bool = True, hint: dict = None, session: Any = None, **kwargs) int[源代码]

删除指定记录

参数
  • collection (str) – 集合(表)

  • filter (dict) – 查询条件字典, 与mongodb的查询条件设置参数一致

  • multi (bool) – default=True, 是否更新全部找到的记录, 如果为Fasle只更新找到的第一条记录

  • hint (dict) – default=None, 指定查询使用索引的名字清单

  • session (Any) – default=None, 指定事务连接对象

返回

删除记录数量

返回类型

int

async destroy()[源代码]

主动销毁驱动(连接)

async drop_collection(collection: str, *args, **kwargs)[源代码]

删除集合

注: 集合不存在也正常返回

参数

collection (str) – 集合名(表名)

async drop_db(name: str, *args, **kwargs)[源代码]

删除数据库

参数

name (str) – 数据库名

init_index_extend_collections(collections: dict)[源代码]

在初始化索引参数中扩展集合索引信息

参数

collections (dict) –

要扩展的集合信息字典(注: 仅用于索引, 不创建实际数据库)

{

‘数据库名’: {

‘集合名’: {

‘comment’: ‘’, # 集合注释

’indexs’: {索引字典}, ‘fixed_col_define’: {固定字段定义}

}

},

}

init_index_extend_dbs(dbs: dict)[源代码]

在初始化索引参数中扩展数据库索引信息

参数

dbs (dict) –

要扩展的数据库信息字典(注: 仅用于索引, 不创建实际数据库)

{

‘数据库名’: {

‘comment’: ‘’, # 数据库注释

’args’: [], # 创建数据库的args参数

’kwargs’: {} #创建数据库的kwargs参数

}

}

async insert_many(collection: str, rows: list, session: Any = None, **kwargs) int[源代码]

插入多条记录

参数
  • collection (str) – 集合(表)

  • rows (list) –

    行记录数组

    注: 每个记录可以通过’_id’字段指定该记录的唯一主键, 如果不送入, 将自动生成一个唯一主键

  • session (Any) – default=None, 指定事务连接对象

返回

返回插入的记录数量

返回类型

int

async insert_one(collection: str, row: dict, session: Any = None, **kwargs) str[源代码]

插入一条记录

参数
  • collection (str) – 集合(表)

  • row (dict) –

    行记录字典

    注: 每个记录可以通过’_id’字段指定该记录的唯一主键, 如果不送入, 将自动生成一个唯一主键

  • session (Any) – default=None, 指定事务连接对象

返回

返回所插入记录的 _id 字段值

返回类型

str

async list_collections(filter: dict = None, **kwargs) list[源代码]

获取所有集合(表)清单

参数

filter (dict) –

default=None, 查找条件

例如查找所有非’system.’开头的集合: {“name”: {“$regex”: r”^(?!system.)”}}

返回

集合(表)清单

返回类型

list

async list_dbs(*args, **kwargs) list[源代码]

列出数据库清单

返回

数据库名清单

返回类型

list

async query_count(collection: str, filter: dict = None, skip: int = None, limit: int = None, hint: dict = None, overtime: float = None, left_join: list = None, session: Any = None, **kwargs) int[源代码]

获取匹配查询条件的结果数量

参数
  • collection (str) – 集合(表)

  • filter (dict) – default=None, 查询条件字典, 与mongodb的查询条件设置方法一样,

  • skip (int) – default=None, 指定跳过返回结果的前面记录的数量

  • limit (int) – default=None, 指定限定返回结果记录的数量

  • hint (dict) – default=None, 指定查询使用索引的名字清单

  • overtime (float) – default=None, 指定操作的超时时间, 单位为秒

  • left_join (list) –

    default=None, 指定左关联(left outer join)集合信息, 每个数组为一个关联表, 格式如下:

    [

    {

    ‘db_name’: ‘指定集合的db’, # 如果不设置则代表和主表是同一个数据库

    ’collection’: ‘要关联的集合(表)名’,

    ’as’: ‘关联后的别名’, # 如果不设置默认为集合名

    ’join_fields’: [(主表字段名, 关联表字段名), …], # 要关联的字段列表, 仅支持完全相等的关联条件

    ’filter’: …, # 关联表数据的过滤条件(仅用于内部过滤需要关联的数据), 注意字段无需添加集合的别名

    },

    ]

  • session (Any) – default=None, 指定事务连接对象

返回

返回查询条件匹配的记录数

返回类型

int

async query_group_by(collection: str, group: dict = None, filter: dict = None, projection: Union[dict, list] = None, sort: list = None, overtime: float = None, session: Any = None, **kwargs) list[源代码]

获取记录聚合统计的结果

参数
  • collection (str) – 集合(表)

  • group (dict) –

    default=None, 分组返回设置字典(注意与mongodb的_id要求有所区别)

    指定分组字段为col1、col2, 聚合字段为count、pay_amt, 其中pay_amt统计col_pay字段的合计数值

    {‘id’: ‘$col1’, ‘name’: ‘$col2’, ‘count’: {‘$sum’: 1}, ‘pay_amt’: {‘$sum’: ‘$col_pay’}}

    常见的聚合类型: $sum-计算总和, $avg-计算平均值, $min-取最小值, $max-取最大值, $first-取第一条, $last-取最后一条

  • filter (dict) – default=None, 查询条件字典, 与mongodb的查询条件设置方法一样

  • projection (dict|list) – default=None, 指定结果返回的字段信息(指统计后的结果)

  • sort (list) – default=None, 查询结果的排序方式(注意排序字段为返回结果的分组字段, 而不是表的原始字段)

  • overtime (float) – default=None, 指定操作的超时时间, 单位为秒

  • session (Any) – default=None, 指定事务连接对象

返回

返回结果列表

返回类型

list

async query_iter(collection: str, filter: dict = None, projection: Union[dict, list] = None, sort: list = None, skip: int = None, limit: int = None, hint: dict = None, fetch_each: int = 1, left_join: list = None, session: Any = None, **kwargs)[源代码]

查询记录(通过迭代对象依次返回)

参数
  • collection (str) – 集合(表)

  • filter (dict) –

    default=None, 查询条件字典, 与mongodb的查询条件设置方法一样, 参考如下:

    {} : 查询全部记录

    {‘id’: ‘info’, ‘ver’: ‘0.0.1’} : where id = ‘info’ and ‘ver’ = ‘0.0.1’

    {‘ver’: {$lt: ‘0.0.1’}} : where ver < ‘0.0.1’

    注: $lt - 小于, $lte - 小于或等于, $gt - 大于, $gte - 大于或等于, $ne - 不等于

    {‘id’: {$gt:50}, $or: [{‘name’: ‘lhj’},{‘title’: ‘book’}]} :

    where id > 50 and (name=’lhj’ or ‘title’ = ‘book’)

    {‘name’: {‘$regex’: ‘likestr’}} : where name like ‘%likestr%’, 正则表达式

    {‘name’: {‘$in’: [‘a’, ‘b’, ‘c’]}} : where name in (‘a’, ‘b’, ‘c’)

    {‘name’: {‘$nin’: [‘a’, ‘b’, ‘c’]}} : where name not in (‘a’, ‘b’, ‘c’)

    {‘col_json.sub_col’: ‘test’}: 查询json字段的指定字典key, 可以支持多级

    {‘col_json.0’: ‘test’}: 查询json字段的指定数组索引, 可以支持多级

    注: 可以在字段名前面加 “#序号.” 用于与left_join参数配合使用, 指定当前排序字段所属的关联表索引(序号从0开始)

  • projection (dict|list) –

    default=None, 指定结果返回的字段信息

    列表模式: [‘col1’,’col2’, …] 注意: 该模式一定会返回 _id 这个主键

    字典模式: {‘_id’: False, ‘col1’: True, …} 该方式可以通过设置False屏蔽 _id 的返回

    注1: 只有 _id 字段可以设置为False, 其他字段不可设置为False(如果要屏蔽可以不放入字典)

    注2: 可以通过字典模式的值设置为$开头的字段名或json检索路径的方式, 进行字段别名处理, 例如{‘as_name’: ‘$real_name’}或{‘as_name’: ‘$real_name.key.key’}

    注3: 可以在字段名前面加 “#序号.” 用于与left_join参数配合使用, 指定当前排序字段所属的关联表索引(序号从0开始)

  • sort (list) –

    default=None, 查询结果的排序方式

    例: [(‘col1’, 1), (‘#0.join_col1’, -1)…]

    注1: 参数的第1个值可以支持’col1.key1’的方式指定json值进行排序

    注2: 参数的第2个值指定是否升序(1为升序, -1为降序)

    注3: 可以在字段名前面加 “#序号.” 用于与left_join参数配合使用, 指定当前排序字段所属的关联表索引(序号从0开始)

  • skip (int) – default=None, 指定跳过返回结果的前面记录的数量

  • limit (int) – default=None, 指定限定返回结果记录的数量

  • hint (dict) –

    default=None, 指定查询使用索引的名字清单

    例: {‘index_name1’: 1, ‘index_name2’: 1}

  • fetch_each (int) – default=1, 每次获取返回的记录数量

  • left_join (list) –

    default=None, 指定左关联(left outer join)集合信息, 每个数组为一个关联表, 格式如下:

    [

    {

    ‘db_name’: ‘指定集合的db’, # 如果不设置则代表和主表是同一个数据库

    ’collection’: ‘要关联的集合(表)名’,

    ’as’: ‘关联后的别名’, # 如果不设置默认为集合名

    ’join_fields’: [(主表字段名, 关联表字段名), …], # 要关联的字段列表, 仅支持完全相等的关联条件

    ’filter’: …, # 关联表数据的过滤条件(仅用于内部过滤需要关联的数据), 注意字段无需添加集合的别名

    },

    ]

  • session (Any) – default=None, 指定事务连接对象

返回

返回的结果列表迭代器

返回类型

list

async query_list(collection: str, filter: dict = None, projection: Union[dict, list] = None, sort: list = None, skip: int = None, limit: int = None, hint: dict = None, left_join: list = None, session: Any = None, **kwargs) list[源代码]

查询记录(直接返回清单)

参数
  • collection (str) – 集合(表)

  • filter (dict) –

    default=None, 查询条件字典, 与mongodb的查询条件设置方法一样, 参考如下:

    {} : 查询全部记录

    {‘id’: ‘info’, ‘ver’: ‘0.0.1’} : where id = ‘info’ and ‘ver’ = ‘0.0.1’

    {‘ver’: {‘$lt’: ‘0.0.1’}} : where ver < ‘0.0.1’

    注: $lt - 小于, $lte - 小于或等于, $gt - 大于, $gte - 大于或等于, $ne - 不等于

    {‘id’: {‘$gt’:50}, ‘$or’: [{‘name’: ‘lhj’},{‘title’: ‘book’}]} :

    where id > 50 and (name=’lhj’ or ‘title’ = ‘book’)

    {‘name’: {‘$regex’: ‘likestr’}} : where name like ‘%likestr%’, 正则表达式

    {‘name’: {‘$in’: [‘a’, ‘b’, ‘c’]}} : where name in (‘a’, ‘b’, ‘c’)

    {‘name’: {‘$nin’: [‘a’, ‘b’, ‘c’]}} : where name not in (‘a’, ‘b’, ‘c’)

    {‘col_json.sub_col’: ‘test’}: 查询json字段的指定字典key, 可以支持多级

    {‘col_json.0’: ‘test’}: 查询json字段的指定数组索引, 可以支持多级

    注: 可以在字段名前面加 “#序号.” 用于与left_join参数配合使用, 指定当前排序字段所属的关联表索引(序号从0开始)

  • projection (dict|list) –

    default=None, 指定结果返回的字段信息

    列表模式: [‘col1’,’col2’, …] 注意: 该模式一定会返回 _id 这个主键

    字典模式: {‘_id’: False, ‘col1’: True, …} 该方式可以通过设置False屏蔽 _id 的返回

    注1: 只有 _id 字段可以设置为False, 其他字段不可设置为False(如果要屏蔽可以不放入字典)

    注2: 可以通过字典模式的值设置为$开头的字段名或json检索路径的方式, 进行字段别名处理, 例如{‘as_name’: ‘$real_name’}或{‘as_name’: ‘$real_name.key.key’}

    注3: 可以在字段名前面加 “#序号.” 用于与left_join参数配合使用, 指定当前排序字段所属的关联表索引(序号从0开始), 例如{‘#0.col1’: True, ‘as_name’: ‘$#0.col2’}

  • sort (list) –

    default=None, 查询结果的排序方式

    例: [(‘col1’, 1), (‘#0.join_col1’, -1)…]

    注1: 参数的第1个值可以支持’col1.key1’的方式指定json值进行排序

    注2: 参数的第2个值指定是否升序(1为升序, -1为降序)

    注3: 可以在字段名前面加 “#序号.” 用于与left_join参数配合使用, 指定当前排序字段所属的关联表索引(序号从0开始)

  • skip (int) – default=None, 指定跳过返回结果的前面记录的数量

  • limit (int) – default=None, 指定限定返回结果记录的数量

  • hint (dict) –

    default=None, 指定查询使用索引的名字清单

    例: {‘index_name1’: 1, ‘index_name2’: 1}

  • left_join (list) –

    default=None, 指定左关联(left outer join)集合信息, 每个数组为一个关联表, 格式如下:

    [

    {

    ‘db_name’: ‘指定集合的db’, # 如果不设置则代表和主表是同一个数据库

    ’collection’: ‘要关联的集合(表)名’,

    ’as’: ‘关联后的别名’, # 如果不设置默认为集合名

    ’join_fields’: [(主表字段名, 关联表字段名), …], # 要关联的字段列表, 仅支持完全相等的关联条件

    ’filter’: …, # 关联表数据的过滤条件(仅用于内部过滤需要关联的数据), 注意字段无需添加集合的别名

    },

    ]

  • session (Any) – default=None, 指定事务连接对象

返回

返回的结果列表

返回类型

list

async query_page(collection: str, page_index: int = 1, page_size: int = 15, filter: dict = None, projection: Union[dict, list] = None, sort: list = None, hint: dict = None, left_join: list = None, session: Any = None, **kwargs) list[源代码]

查询分页记录(直接返回清单)

参数
  • collection (str) – 集合(表)

  • page_index (int) – default=1, 分页位置, 从1开始算

  • page_size (int) – default=15, 每页大小

  • filter (dict) –

    default=None, 查询条件字典, 与mongodb的查询条件设置方法一样, 参考如下:

    {} : 查询全部记录

    {‘id’: ‘info’, ‘ver’: ‘0.0.1’} : where id = ‘info’ and ‘ver’ = ‘0.0.1’

    {‘ver’: {‘$lt’: ‘0.0.1’}} : where ver < ‘0.0.1’

    注: $lt - 小于, $lte - 小于或等于, $gt - 大于, $gte - 大于或等于, $ne - 不等于

    {‘id’: {‘$gt’:50}, ‘$or’: [{‘name’: ‘lhj’},{‘title’: ‘book’}]} :

    where id > 50 and (name=’lhj’ or ‘title’ = ‘book’)

    {‘name’: {‘$regex’: ‘likestr’}} : where name like ‘%likestr%’, 正则表达式

    注: 可以在字段名前面加 “#序号.” 用于与left_join参数配合使用, 指定当前排序字段所属的关联表索引(序号从0开始)

  • projection (dict|list) –

    default=None, 指定结果返回的字段信息

    列表模式: [‘col1’,’col2’, …] 注意: 该模式一定会返回 _id 这个主键

    字典模式: {‘_id’: False, ‘col1’: True, …} 该方式可以通过设置False屏蔽 _id 的返回

    注意: 只有 _id 字段可以设置为False, 其他字段不可设置为False(如果要屏蔽可以不放入字典)

    注1: 只有 _id 字段可以设置为False, 其他字段不可设置为False(如果要屏蔽可以不放入字典)

    注2: 可以通过字典模式的值设置为$开头的字段名或json检索路径的方式, 进行字段别名处理, 例如{‘as_name’: ‘$real_name’}或{‘as_name’: ‘$real_name.key.key’}

    注3: 可以在字段名前面加 “#序号.” 用于与left_join参数配合使用, 指定当前排序字段所属的关联表索引(序号从0开始), 例如{‘#0.col1’: True, ‘as_name’: ‘$#0.col2’}

  • sort (list) –

    default=None, 查询结果的排序方式

    例: [(‘col1’, 1), (‘#0.join_col1’, -1)…]

    注1: 参数的第1个值可以支持’col1.key1’的方式指定json值进行排序

    注2: 参数的第2个值指定是否升序(1为升序, -1为降序)

    注3: 可以在字段名前面加 “#序号.” 用于与left_join参数配合使用, 指定当前排序字段所属的关联表索引(序号从0开始)

  • hint (dict) –

    default=None, 指定查询使用索引的名字清单

    例: {‘index_name1’: 1, ‘index_name2’: 1}

  • left_join (list) –

    default=None, 指定左关联(left outer join)集合信息, 每个数组为一个关联表, 格式如下:

    [

    {

    ‘db_name’: ‘指定集合的db’, # 如果不设置则代表和主表是同一个数据库

    ’collection’: ‘要关联的集合(表)名’,

    ’as’: ‘关联后的别名’, # 如果不设置默认为集合名

    ’join_fields’: [(主表字段名, 关联表字段名), …], # 要关联的字段列表, 仅支持完全相等的关联条件

    ’filter’: …, # 关联表数据的过滤条件(仅用于内部过滤需要关联的数据), 注意字段无需添加集合的别名

    },

    ]

  • session (Any) – default=None, 指定事务连接对象

返回

返回的分页的结果列表

返回类型

list

async query_page_info(collection: str, page_size: int = 15, filter: dict = None, hint: dict = None, left_join: list = None, session: Any = None, **kwargs) dict[源代码]

查询分页信息字典

参数
  • collection (str) – 集合(表)

  • page_size (int) – default=15, 每页大小

  • filter (dict) –

    default=None, 查询条件字典, 与mongodb的查询条件设置方法一样, 参考如下:

    {} : 查询全部记录

    {‘id’: ‘info’, ‘ver’: ‘0.0.1’} : where id = ‘info’ and ‘ver’ = ‘0.0.1’

    {‘ver’: {‘$lt’: ‘0.0.1’}} : where ver < ‘0.0.1’

    注: $lt - 小于, $lte - 小于或等于, $gt - 大于, $gte - 大于或等于, $ne - 不等于

    {‘id’: {‘$gt’:50}, ‘$or’: [{‘name’: ‘lhj’},{‘title’: ‘book’}]} :

    where id > 50 and (name=’lhj’ or ‘title’ = ‘book’)

    {‘name’: {‘$regex’: ‘likestr’}} : where name like ‘%likestr%’, 正则表达式

    注: 可以在字段名前面加 “#序号.” 用于与left_join参数配合使用, 指定当前排序字段所属的关联表索引(序号从0开始)

  • hint (dict) –

    default=None, 指定查询使用索引的名字清单

    例: {‘index_name1’: 1, ‘index_name2’: 1}

  • left_join (list) –

    default=None, 指定左关联(left outer join)集合信息, 每个数组为一个关联表, 格式如下:

    [

    {

    ‘db_name’: ‘指定集合的db’, # 如果不设置则代表和主表是同一个数据库

    ’collection’: ‘要关联的集合(表)名’,

    ’as’: ‘关联后的别名’, # 如果不设置默认为集合名

    ’join_fields’: [(主表字段名, 关联表字段名), …], # 要关联的字段列表, 仅支持完全相等的关联条件

    ’filter’: …, # 关联表数据的过滤条件(仅用于内部过滤需要关联的数据), 注意字段无需添加集合的别名

    },

    ]

  • session (Any) – default=None, 指定事务连接对象

返回

返回的分页信息

{

‘total’: ?, # 记录总数

’total_pages’: ?, # 分页数

’page_size’: ? # 每页大小

}

返回类型

dict

async run_native_cmd(*args, **kwargs)[源代码]

执行原生命令(或SQL)并返回执行结果

注: 该函数不支持驱动的兼容处理

async start_transaction(*args, **kwargs) Any[源代码]

启动事务

注: 通过该方法处理事务, 必须显式通过commit_transaction或abort_transaction关闭事务

返回

返回事务所在的连接(session)

返回类型

Any

async switch_db(name: str, *args, **kwargs)[源代码]

切换当前数据库到指定数据库

参数

name (str) – 数据库名

async turncate_collection(collection: str, *args, **kwargs)[源代码]

清空集合记录

参数

collection (str) – 集合名(表名)

async update(collection: str, filter: dict, update: dict, multi: bool = True, upsert: bool = False, hint: dict = None, session: Any = None, **kwargs) int[源代码]

更新找到的记录

参数
  • collection (str) – 集合(表)

  • filter (dict) – 查询条件字典, 与mongodb的查询条件设置参数一致

  • update (dict) –

    更新信息字典, 与mongodb的更新设置参数一致, 参考如下:

    {‘$set’: {‘name’: ‘myname’, …}}: name=’myname’, 设置某个字段的值

    {‘$inc’: {‘age’: 3, …}} : age = age + 3, 对数字类型字段, 在现有值上增加指定数值

    {‘$mul’: {‘age’: 2, …}} : age = age * 2, 对数字类型字段, 在现有值上乘以指定数值

    {‘$min’: {‘age’: 10, …}} : age = min(age, 10), 将现有值和给出值比较, 设置为小的值

    {‘$max’: {‘age’: 10, …}} : age = max(age, 10), 将现有值和给出值比较, 设置为大的值

    {‘$unset’: {‘job’: 1}}: job=null, 删除指定字段

    {‘$rename’: {‘old_name’: ‘new_name’, …}}: 将字段名修改为新字段名

  • multi (bool) – default=True, 是否更新全部找到的记录, 如果为Fasle只更新找到的第一条记录

  • upsert (bool) – default=False, 指定如果记录不存在是否插入

  • hint (dict) – default=None, 指定查询使用索引的名字清单

  • session (Any) – default=None, 指定事务连接对象

返回

返回更新的数据条数

返回类型

int