分享

python实现的NoSql数据库系列

 佬总图书馆 2019-12-19
# -*-coding:utf-8-*-from python_based_db.db import Databasefrom python_based_db.db_opr_decorator import is_exist_datafrom 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

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约