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许可证发布。
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许可证发布。