python实现的NoSql数据库系列-基本数据库操作

# -*-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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值