TinyDB是一个小型的、面向文档的数据库,为您的幸福而优化:)

tinydb的Python项目详细描述


https://raw.githubusercontent.com/msiemens/tinydb/master/artwork/logo.png

Build StatusCoverageVersion

导言

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的贡献!以下是开始的方法:

  1. 检查未解决的问题或打开新问题以开始讨论 功能理念或缺陷
  2. github上的forkthe repository, 从master分支创建一个新分支并开始进行更改 (称为GitHub Flow
  3. 编写一个测试,显示bug已被修复或该特性工作正常 如预期
  4. 发送一个pull请求并对维护程序进行bug操作,直到它被合并并 出版

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

推荐PyPI第三方库


热门话题
具有未知数量条件的java If语句   java如何在Spark中使用两个“条件”进行过滤?   雅加达ee为ColdFusion提供的最佳Java ee服务器   java如何在jersey的MessageBodyWriter方法中获取writeTo中的anotations值?   java从脚本文件调用jar文件中的函数   java在执行insert语句后,如何获得id值为的语句?   在OS X上设置OpenCV Java绑定   java使用for循环遍历数组x。以字符串形式返回x的元素,其中每个元素由一个空格分隔   ApacheiClientBuilder为Algolia Java创建的APIClient是线程安全的吗?   java在DFS/BFS算法中获取邻居时避免内存分配?   java使用AES/CBC/PKCS5P加密大文件(2GB)   允许保存/加载列布局的Java DB网格组件   队列大小为1的java Spring调度   跑步带有Java参数的exe   java正则表达式将所有“<”和“>”标记替换为“&lt;”及“&gt;”在<<![CDATA]>标签?   java何时同步变量?