# -*-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
python实现的NoSql数据库系列-高级数据库操作
最新推荐文章于 2024-06-04 11:17:24 发布