将数据字典永久储存!Staticed:基于python的轻量模块

基于 python 的轻量外置字典模块: Staticed v1.2.0

  • 欢迎使用 Staticed
    • 新的改变
    • 模块简介
    • Staticed 方法参数
    • 实例展示
    • Staticed 源码

欢迎使用 Staticed

Staticed 外置字典开发基于Pickle,这是一个对初学者或者追求动态调用数据的开发者及其友好的轮子,如果你想学习如何使用 Staticed 模块, 可以仔细阅读这篇文章,了解一下 Staticed 的基本使用方法。

新的改变

Staticed v1.2.0 版本对比 v1.1.0 版本,代码的错误处理更加清晰,处理结果返回值进行简化,不再返回错误信息

模块简介

当我们想储存少量数据到外部文件,或者对程序的参数进行永久性的设置,数据库无疑是通用解决方案,又或者使用 csv,json 文件,但是用起来并不是非常方便,也许他们的功能非常强大,但代码量同样是对应的。在Staticed 看来如果只是想简单的储存数据或者进行设置,完全没有必要进行这么繁琐的操作,使用 Staticed 仅仅几行代码就能够处理这些内容。

Staticed 方法参数

方法名 参数 方法作用
staticed.load() file_path:str 创建 Staticed 对象
load.load() self, file_path:str 静态获取pkl文件字典内容 (不常用)
load.save() self, dict_data:dict, file_path:str 静态储存pkl文件字典内容 (不常用)
select() key_name:str 查询字典元素
update() key_name:str, value:var 修改字典元素
remove() key_name:str 删除字典元素
clear() 清空字典

实例展示

import staticed
#导入Staticed模块

staticed.load.load(staticed.load, "dictFileName")
# 静态获取pkl文件字典内容 (不常用), 返回值:dict|None|False

staticed.load.save(staticed.load, "dictFileName", dict_data)
# 静态储存pkl文件字典内容 (不常用), 返回值:True|False

demo_dict = staticed.load("dictFileName")
# 创建 Staticed 对象, 返回值:Staticed 对象

demo_dict.select("key_name")
# 查询字典元素, 返回值:value|None|False

demo_dict.update("key_name", value)
# 修改字典元素, 返回值:True|False

demo_dict.remove("key_name")
# 删除字典元素, 返回值:True|False

demo_dict.clear()
# 清空字典, 返回值:True|False

Staticed 源码

PS:由于作者加速器到期了,懒于上传 GitHub, 所以大家复制过去用吧, 将源码粘贴到py文件,命名为staticed[#偷笑]

import pickle
import os


class load:
    path = None  # 数据文件名称

    def __init__(self, file_path):
        try:
            self.path = file_path
            if not os.path.exists(self.path + '.pkl'):
                with open(self.path + '.pkl', "wb") as dict_file:
                    pickle.dump(dict(), dict_file, pickle.HIGHEST_PROTOCOL)
        except Exception as e:
            print(e, e.__traceback__.tb_lineno)

    # 初始化数据文件

    def load(self, file_path=None):
        try:
            if file_path:
                with open(file_path + '.pkl', 'rb') as dict_file:
                    return pickle.load(dict_file)
            elif not file_path:
                with open(self.path + '.pkl', 'rb') as dict_file:
                    return pickle.load(dict_file)
        except FileNotFoundError:
            return None
        except Exception as e:
            print(e.__traceback__.tb_lineno)
            return False

    # 加载数据文件

    def save(self, dict_data, file_path=None):
        try:
            if file_path:
                with open(file_path + '.pkl', 'wb') as dict_file:
                    pickle.dump(dict_data, dict_file, pickle.HIGHEST_PROTOCOL)
            elif not file_path:
                with open(self.path + '.pkl', 'wb') as dict_file:
                    pickle.dump(dict_data, dict_file, pickle.HIGHEST_PROTOCOL)
        except FileNotFoundError:
            return None
        except Exception as e:
            print(e.__traceback__.tb_lineno)
            return False
        else:
            return True

    # 保存数据文件

    def select(self, key_name):
        try:
            data = self.load()
            value = data.get(key_name)
            if value:
                return value
            else:
                return None
        except Exception as e:
            print(e, e.__traceback__.tb_lineno)
            return False

    # 查询数据文件

    def update(self, key_name, value):
        try:
            data = self.load()
            data[key_name] = value
            self.save(data)
        except Exception as e:
            print(e, e.__traceback__.tb_lineno)
            return False
        else:
            return True

    # 更新数据文件

    def remove(self, key_name):
        try:
            data = self.load()
            del data[key_name]
            self.save(data)
        except KeyError:
            return False
        except Exception as e:
            print(e, e.__traceback__.tb_lineno)
            return False

    # 删除数据值

    def clear(self):
        try:
            data = dict()
            self.save(data)
        except Exception as e:
            print(e, e.__traceback__.tb_lineno)
            return False
        else:
            return True

    # 清空数据文件

你可能感兴趣的:(Python实用轮子,python,数据库,windows,服务器)