TinyDB是一个小型的、面向文档的数据库,为您的幸福而优化:)
tinydb的Python项目详细描述
导言
TinyDB是一个轻量级的面向文档的数据库,为您的幸福而优化:) 它是用纯Python编写的,没有外部依赖项目标是 会被SQL-DB或外部数据库服务器破坏的小型应用程序。
TinyDB是:
- tiny:当前源代码有1200行代码(大约40% 文档)和1000行测试。比较一下:Buzhug大约有2500个 代码行(没有测试),CodernityDB大约有7000行代码 (无测试)。
- 面向文档:就像MongoDB,您可以存储任何文档 (表示为dict)在tinydb中。
- 为您的幸福而优化:TinyDB的设计非常简单 提供简单而干净的api,使用起来很有趣。
- 用纯python编写:tinydb不需要外部服务器(as 例如PyMongo)或任何依赖项 从皮皮
- 适用于Python 2.7和3.3–3.6,PyPy:TinyDB适用于所有现代 python和pypy的版本。
- powerfully extensible:通过编写新的 使用中间产品存储或修改存储的行为。
- 100%测试覆盖率:无需解释
要直接深入到所有细节,请转到TinyDB docs。你也可以讨论所有相关的事情 像TinyDB一般开发、扩展或展示基于TinyDB的 关于discussion forum的项目。
支持的Python版本
TinyDB已经用Python 2.7、3.3-3.6和PyPy进行了测试
示例代码
>>>fromtinydbimportTinyDB,Query>>>db=TinyDB('/path/to/db.json')>>>db.insert({'int':1,'char':'a'})>>>db.insert({'int':1,'char':'b'})
查询语言
>>>User=Query()>>># Search for a field value>>>db.search(User.name=='John')[{'name':'John','age':22},{'name':'John','age':37}]>>># Combine two queries with logical and>>>db.search((User.name=='John')&(User.age<=30))[{'name':'John','age':22}]>>># Combine two queries with logical or>>>db.search((User.name=='John')|(User.name=='Bob'))[{'name':'John','age':22},{'name':'John','age':37},{'name':'Bob','age':42}]>>># More possible comparisons: != < > <= >=>>># More possible checks: where(...).matches(regex), where(...).test(your_test_func)
表格
>>>table=db.table('name')>>>table.insert({'value':True})>>>table.all()[{'value':True}]
使用中间件
>>>fromtinydb.storagesimportJSONStorage>>>fromtinydb.middlewaresimportCachingMiddleware>>>db=TinyDB('/path/to/db.json',storage=CachingMiddleware(JSONStorage))
贡献
无论是报告错误、讨论改进和新想法还是写作 分机:欢迎您对Tinydb的贡献!以下是开始的方法:
- 检查未解决的问题或打开新问题以开始讨论 功能理念或缺陷
- github上的forkthe repository, 从master分支创建一个新分支并开始进行更改 (称为GitHub Flow)
- 编写一个测试,显示bug已被修复或该特性工作正常 如预期
- 发送一个pull请求并对维护程序进行bug操作,直到它被合并并 出版