sheng233 发表于 2023-7-22 19:50

JSONDBSD|json小型数据库

这个已经在gitee和GitHub发送
https://gitee.com/worldly-way/jsondbsd/


# JSONDBSD

JSONDBSD是一个简单的PHP类,用于操作JSON格式的数据库。

用于小型项目,对要求不高,就没有必要使用数据库


## php

1. 构造函数`__construct`:在初始化时,通过传入的文件名构建一个锁文件名,并调用`loadData`方法加载数据。`loadData`方法首先通过`fileReadSafe`方法安全地读取文件内容,并将内容解析为JSON格式的数据。如果文件内容为空或解析失败,则初始化一个空的数据数组。将加载的数据赋值给`data`和`cache`两个属性。

2. `saveData`方法:将数据保存到文件中。它将数据转换为JSON格式的字符串,并调用`fileWriteSafe`方法安全地写入文件。

3. `insert`方法:向指定的表中插入数据。如果表不存在,则先创建一个空的表。然后将数据添加到表中,并更新缓存和保存数据。

4. `delete`方法:从指定的表中删除符合条件的数据。首先检查表是否存在,然后使用`array_filter`函数将满足条件的数据筛选出来,并更新表的数据和缓存,最后保存数据。

5. `select`方法:查询指定表中满足条件的数据。首先检查表是否存在,然后遍历缓存中的数据,对每一行数据都使用`checkConditions`方法进行条件判断,如果满足条件则将其添加到结果数组中。最后返回结果数组。

6. `update`方法:更新指定表中符合条件的数据。首先检查表是否存在,然后遍历表中的每一行数据,对每一行数据都使用`checkConditions`方法进行条件判断,如果满足条件则更新数据。最后更新缓存和保存数据。

7. `checkConditions`方法:用于判断一行数据是否满足给定的条件。它遍历条件数组中的每个字段和比较操作符,根据操作符对字段值和比较值进行比较,并根据比较结果更新`result`变量。最后返回`result`变量。

8. `fileReadSafe`方法和`fileWriteSafe`方法:用于安全地读取和写入文件。它们使用文件锁机制(`flock`函数)来确保在读取或写入文件时不会被其他进程或线程干扰,来提高并发

已测试2h2g 5m 服务器5000-10000的并发(不过缺点是数据库不能太大)



## Python

JSONDBSD是一个简单的数据库管理类,使用Python编写,可以用于存储和操作JSON格式的数据。

## 特点

- 轻量且易于使用
- 数据以JSON格式存储
- 支持基本的CRUD操作:插入、删除、查询、更新
- 支持基于条件的查询
- 基于文件的存储,使用文件锁确保数据一致性

## 使用方法

1. 在您的Python项目中包含`JSONDBSD.py`文件。
2. 创建`JSONDBSD`类的实例,并提供JSON数据文件的文件名。
3. 使用`insert`方法插入数据。
4. 使用`delete`方法删除数据。
5. 使用`select`方法查询数据。
6. 使用`update`方法更新数据。



##原理

1. 在初始化时,通过传入的文件名构建一个锁文件名,并调用load_data方法加载数据。load_data方法首先检查文件是否存在,如果存在则尝试读取文件内容,并将内容解析为JSON格式的数据。如果文件内容为空或解析失败,则初始化一个空的数据字典。将加载的数据赋值给data和cache两个属性。

2. save_data方法用于将数据保存到文件中。它将数据转换为JSON格式的字符串,并将其写入文件中。

3. insert方法用于向指定的表中插入数据。如果表不存在,则先创建一个空的表。然后将数据添加到表中,并更新缓存和保存数据。

4. delete方法用于从指定的表中删除符合条件的数据。首先检查表是否存在,然后使用列表推导式将满足条件的数据筛选出来,并更新表的数据和缓存,最后保存数据。

5. select方法用于查询指定表中满足条件的数据。首先检查表是否存在,然后遍历缓存中的数据,对每一行数据都使用check_conditions方法进行条件判断,如果满足条件则将其添加到结果列表中。最后返回结果列表。

6. update方法用于更新指定表中符合条件的数据。首先检查表是否存在,然后遍历表中的每一行数据,对每一行数据都使用check_conditions方法进行条件判断,如果满足条件则更新数据。最后更新缓存和保存数据。

7. check_conditions方法用于判断一行数据是否满足给定的条件。它遍历条件字典中的每个字段和比较操作符,根据操作符对字段值和比较值进行比较,并根据比较结果更新result变量。最后返回result变量。

## 示例

```python
# 导入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}})
```



紫云互联 发表于 2023-7-22 23:46

只能说中看不中用。
页: [1]
查看完整版本: JSONDBSD|json小型数据库