这个已经在gitee和GitHub发送
https://gitee.com/worldly-way/jsondbsd/
JSONDBSD
JSONDBSD是一个简单的PHP类,用于操作JSON格式的数据库。
用于小型项目,对要求不高,就没有必要使用数据库
php
-
构造函数__construct :在初始化时,通过传入的文件名构建一个锁文件名,并调用loadData 方法加载数据。loadData 方法首先通过fileReadSafe 方法安全地读取文件内容,并将内容解析为JSON格式的数据。如果文件内容为空或解析失败,则初始化一个空的数据数组。将加载的数据赋值给data 和cache 两个属性。
-
saveData 方法:将数据保存到文件中。它将数据转换为JSON格式的字符串,并调用fileWriteSafe 方法安全地写入文件。
-
insert 方法:向指定的表中插入数据。如果表不存在,则先创建一个空的表。然后将数据添加到表中,并更新缓存和保存数据。
-
delete 方法:从指定的表中删除符合条件的数据。首先检查表是否存在,然后使用array_filter 函数将满足条件的数据筛选出来,并更新表的数据和缓存,最后保存数据。
-
select 方法:查询指定表中满足条件的数据。首先检查表是否存在,然后遍历缓存中的数据,对每一行数据都使用checkConditions 方法进行条件判断,如果满足条件则将其添加到结果数组中。最后返回结果数组。
-
update 方法:更新指定表中符合条件的数据。首先检查表是否存在,然后遍历表中的每一行数据,对每一行数据都使用checkConditions 方法进行条件判断,如果满足条件则更新数据。最后更新缓存和保存数据。
-
checkConditions 方法:用于判断一行数据是否满足给定的条件。它遍历条件数组中的每个字段和比较操作符,根据操作符对字段值和比较值进行比较,并根据比较结果更新result 变量。最后返回result 变量。
-
fileReadSafe 方法和fileWriteSafe 方法:用于安全地读取和写入文件。它们使用文件锁机制(flock 函数)来确保在读取或写入文件时不会被其他进程或线程干扰,来提高并发
已测试2h2g 5m 服务器 5000-10000的并发(不过缺点是数据库不能太大)
Python
JSONDBSD是一个简单的数据库管理类,使用Python编写,可以用于存储和操作JSON格式的数据。
特点
- 轻量且易于使用
- 数据以JSON格式存储
- 支持基本的CRUD操作:插入、删除、查询、更新
- 支持基于条件的查询
- 基于文件的存储,使用文件锁确保数据一致性
使用方法
- 在您的Python项目中包含
JSONDBSD.py 文件。
- 创建
JSONDBSD 类的实例,并提供JSON数据文件的文件名。
- 使用
insert 方法插入数据。
- 使用
delete 方法删除数据。
- 使用
select 方法查询数据。
- 使用
update 方法更新数据。
原理
-
在初始化时,通过传入的文件名构建一个锁文件名,并调用load_data方法加载数据。load_data方法首先检查文件是否存在,如果存在则尝试读取文件内容,并将内容解析为JSON格式的数据。如果文件内容为空或解析失败,则初始化一个空的数据字典。将加载的数据赋值给data和cache两个属性。
-
save_data方法用于将数据保存到文件中。它将数据转换为JSON格式的字符串,并将其写入文件中。
-
insert方法用于向指定的表中插入数据。如果表不存在,则先创建一个空的表。然后将数据添加到表中,并更新缓存和保存数据。
-
delete方法用于从指定的表中删除符合条件的数据。首先检查表是否存在,然后使用列表推导式将满足条件的数据筛选出来,并更新表的数据和缓存,最后保存数据。
-
select方法用于查询指定表中满足条件的数据。首先检查表是否存在,然后遍历缓存中的数据,对每一行数据都使用check_conditions方法进行条件判断,如果满足条件则将其添加到结果列表中。最后返回结果列表。
-
update方法用于更新指定表中符合条件的数据。首先检查表是否存在,然后遍历表中的每一行数据,对每一行数据都使用check_conditions方法进行条件判断,如果满足条件则更新数据。最后更新缓存和保存数据。
-
check_conditions方法用于判断一行数据是否满足给定的条件。它遍历条件字典中的每个字段和比较操作符,根据操作符对字段值和比较值进行比较,并根据比较结果更新result变量。最后返回result变量。
示例
# 导入JSONDBSD类
from JSONDBSD import JSONDBSD
# 创建JSONDBSD对象
db = JSONDBSD('data.json')
# 插入数据
db.insert('users', {'id': 1, 'name': 'John Doe', 'age': 25})
# 查询数据
result = db.select('users', {'age': {'>': 25}})
print(result)
# 更新数据
db.update('users', {'id': {'=': 1}}, {'age': 26})
# 删除数据
db.delete('users', {'age': {'<': 30}})
|