json文件作为数据库

jsondb的Python项目详细描述


========
jsondb公司
========

对于不适合内存的大数据,关闭内存json。

![构建状态](https://secure.travis-ci.org/shaung/jsondb.png?分支=开发)


安装

要安装,只需运行:

python setup.py安装


开始


要创建数据库:

导入jsondb

从空dict创建(默认值)
db=jsondb.create({})

或列表/元组
db=jsondb.create([])


从现有JSON文件创建::

db=jsondb.from_文件(json_文件路径)
也接受类似文件的对象
db=jsondb.from_file(打开(json_file_path,'rb'))

现在将一些数据添加到数据库并访问它们:

db['name']=“foo”
断言db['name']='foo'

db['items']=[]
对于范围(3)内的i:
db['items'].append({
“id”:我,
“名称”:chr(97+i),
})

断言db['items'][0]['id']==0
断言长度(db['items'])==3
< BR/> AdvestDB。GET(“不存在”,“NoDebug”)= =“NoDebug”

它就像一个普通的dict/list,
但要获取其值,请使用“data()”方法:


打印数据库['name'].data()

获取数据
断言db.data()={
“名称”:“foo”,
“项目”:[
{'id':0,'name':'a'},
{'id':1,'name':'b'},
{'id':2,'name':'c'},

}


查询


jsondb还支持基于jsonpath的语法的复杂查询,
此处描述:http://goessner.net/articles/jsonpath/

`db.query`返回一个可iterable的'queryresult'对象。

结果=db.query('$.items.name')

迭代查询结果

对于x-in结果:
打印x.data(),

要获取结果的所有值,

=>;['a','b','c']
打印rslt.values()

要只获取一个值,

获取一个结果
断言db.query('$.name').getone()='foo'

db.query('$.name').getone().data()

更复杂的查询示例:

条件查询

打印数据库查询('$.items[?(@.id=1)].name').getone().data()

切片
=>;['a','b']
打印db.query('$.items[:-1].name').values()


持久性


所有数据都存储在磁盘上。
在当前实现中,数据保存为sqlite数据库,
但对其他数据库管理系统的支持是摆在桌面上的。

“create”和“from_file”都接受“url”参数,
指示存储数据的位置:

db=jsondb.create({},url=/path/to/filename.db')
等于
db=jsondb.create({},url='sqlite3://path/to/filename.db')

未指定时,默认情况下将在`/tmp'中创建临时文件。

要确保对数据库所做的所有更改都保存到文件中,

数据库保存()

当不再需要时,记得关闭它:

数据库关闭()

或使用上下文管理器:

使用jsondb.create(url='path/to/filename.db')作为db:
在这里做所有的工作

稍后加载现有的JSONDB文件,

db=jsondb.load('path/to/filename.db')


许可证


根据BSD许可证发布。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java Clojure关键字在内存中的大小是多少?   Java中有固定长度的通用数组对象吗?   PostgreSQL:通过Java更新我的用户表   错误:使用java解析xml   java Json显示列表中对象的名称   java比较JodaTime时区   与JAVA中的API和包的区别?   java的int值在for循环中不改变   谷歌应用引擎中的java RSA   迁移到spring 5后出现java非法字符错误   java Websphere管理控制台不工作   JavaGSON如何始终在json中包含毫秒?   带有空格和双引号的windows Java ProcessBuilder命令参数失败   java错误:重复的zip条目[43.jar:org/apache/http/annotation/NotThreadSafe.class]