# -*-coding:utf-8-*-
from python_based_db.db import Database
from python_based_db.message import *
# 判断数据存在装饰器
def is_exist_data(exe_fun):
def wapper(self, *args, **kwargs):
if self.db.get(self.params[0]) is None:
print(NOT_DATA)
return
return exe_fun(self)
return wapper
class BasicOperation(Database):
def __init__(self):
self.db = super().db_dict
self.params = None
# 新增,修改字符串或数值
def basic_set(self):
self.db[self.params[0]] = self.params[1]
# 获取字符串或数值
@is_exist_data
def basic_get(self):
return self.db.get(self.params[0])
# 删除字符串或数值
@is_exist_data
def basic_del(self):
del super().db_dict[self.params[0]]
# 创建或者新增命名列表 setl listname [val] 没有值的时候创建空列表
def basic_set_list(self):
list_name = self.params[0]
val_list = list(self.params[1:])
# 先判断是否存在列表,没有要先创建,如果传空参数,默认重设为新列表
if self.db.get(list_name) is None:
self.db[list_name] = []
# 这里注意用get,可以避免异常,返回None做判断
if len(val_list) == 0:
self.db[list_name] = []
else:
self.db[list_name].extend(val_list)
# 按索引/成员查找列表 getl listname [val] -idx/mem 没有参数是删除整个列表
@is_exist_data
def basic_get_list(self):
if len(self.params) > 1:
if str(self.params[1]).isdigit():
return self.db.get(self.params[0])[int(self.params[1])]
else:
print(LIST_PARAMS_ERROR)
return
return self.db.get(self.params[0])
# 获取指定成员的索引
def basic_get_list_mem(self):
return self.db.get(self.params[0]).index(self.params[1])
# 删除指定索引和值
def basic_del_list(self):
self.db.get(self.params[0]).remove(self.params[1])
# 创建新增字典 setd dictname [key] [val] 没有值得时候默认创建空字典,有键值的时候添加
def basic_set_dict(self):
dict_name = self.params[0]
dict_key_val = self.params[1:]
# 先判断是否存在列表,没有要先创建,如果传空参数,默认重设为新列表
if self.db.get(dict_name) is None:
self.db[dict_name] = {}
if len(self.params) == 0:
self.db[dict_name] = {}
else:
for key_val in dict_key_val:
key, val = key_val.split(':')
self.db[dict_name][key] = val
# 按键查找列表 getd dictname [key] 没有查找键参数默认查找全部数据
@is_exist_data
def basic_get_dict(self):
if len(self.params) > 1:
return self.db[self.params[0]][self.params[1]]
return self.db[self.params[0]]
# 按键删除 deld dictname [key]
@is_exist_data
def basic_del_dict(self):
del self.db[self.params[0]][self.params[1]]
def basic_set_olist(self):
pass
def basic_get_olist(self):
pass
def basic_del_olist(self):
pass
python实现的NoSql数据库系列-基本数据库操作
最新推荐文章于 2024-08-26 23:50:24 发布