python实现的NoSql数据库系列-高级数据库操作

# -*-coding:utf-8-*-
from python_based_db.db import Database
from python_based_db.db_opr_decorator import is_exist_data
from python_based_db.message import *

class AdvancedOperation(Database):

    def __init__(self):
        self.db = super().db_dict
        self.params = None
        self.data = None

    # 0 通用操作,帮助文档
    def help(self):
        pass

    # 1 通用操作,长度计算 len key
    @is_exist_data
    def adv_len_val(self):
        return len(self.data)

    # 2 通用操作,进行某个值得统计 count key val
    @is_exist_data
    def adv_count_val(self):
        return self.db[self.params[0]].count(self.params[1])

    # 3 通用操作,最大值 max key
    @is_exist_data
    def adv_max_val(self):
        return max(self.db[self.params[0]])

    # 4 通用操作,最小值 min key
    @is_exist_data
    def adv_min_val(self):
        return min(self.db[self.params[0]])

    # 5 通用操作,排序(升序和降序) sortl key,只对无序列表和字符串排序
    @is_exist_data
    def adv_sort_val(self):
        data = self.db[self.params[0]]
        if data:
            if isinstance(data, str):
                data_list = list(data)
                data_list.sort()
                data = ''.join(data_list)

            elif isinstance(data, list):
                data = list(sorted(data))

            else:
                print(UNSUPPORTED_SORTED)
                return

            # 排序完后要把值重新填充回去
            self.db[self.params[0]] = data
            print(data)
        else:
            print(EMPTY_SEQ)

    # 6 通用操作,复制copy source_key target_key,现在这里只有浅复制
    def adv_copy_val(self):
        data = self.db[self.params[0]]
        if isinstance(data, str):
            self.db[self.params[1]] = data[:]
        else:
            self.db[self.params[1]] = data.copy()

    # 7 通用操作,成员判断 in val key
    def adv_contain(self):
        return self.params[0] in self.db[self.params[1]]

    # 8 数值,支持精度操作 format key
    def adv_format_num(self):
        try:
            data = float(self.db[self.params[0]])
            precision = str(self.params[1])
            self.db[self.params[0]] = ('%.' + precision + 'f') % data
        except Exception as e:
            print(UNSUPPORTED_OPR)

    # 9 数值,支持四舍五入操作 roundn key
    def adv_round_num(self):
        try:
            data = float(self.db[self.params[0]])
            self.db[self.params[0]] = round(data, 2)
        except:
            print(UNSUPPORTED_OPR)

    # 10 字符串,支持大小写转换 change key --up/low
    def adv_change(self):
        data = self.db[self.params[0]]
        add_params = self.params[2]
        if add_params == 'up':
            self.db[self.params[0]] = data.upper()
        else:
            self.db[self.params[0]] = data.lower()

    # 11 字符串,修改拼接 merge key new_val
    def adv_merge(self):
        self.db[self.params[0]] = self.db[self.params[0]] + self.params[1]

    # 12 支持简单的连接操作 join list/dict list/dict 这个功能可能会比较复杂
    def adv_join(self):
        pass
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值