TinyDB的基于Git的存储后端。

tinydb-git的Python项目详细描述


tinydb的存储后端,将数据库更改存储在git中 分支。

tinydb-git允许您将git存储库中的任何分支用作 tinydb

hiro@wintermute:tmp$ git init example
Initialized empty Git repository in /tmp/example/.git/

对数据库的每次修改都会导致新的提交:

>>> importtinydb>>> fromtinydb_git.jsonimportJSONGitStorage>>> db=tinydb.TinyDB('example',storage=JSONGitStorage)>>> db.insert({'text':'first record'})1
hiro@wintermute:example$ git log
commit de9a07844783b8e420fce6f9568e126dd7779e74

    Updated by tinydb-git 0.1.dev1

commit 3b31825cf312cb5d42f792998faddf20b634c7d9

    Updated by tinydb-git 0.1.dev1

多次调用insert()将导致每次调用的提交。这可能是 通过使用tinyrecord事务避免:

>>> fromtinyrecordimporttransaction>>> withtransaction(db.table('_default'))ast:... t.insert({'b':2})... t.insert({'c':3})... t.insert({'d':4})...>>>

结果是:

hiro@wintermute:example$ git log
commit e02a3af06d7cd7eeb6990277777cc24d384249e8

    Updated by tinydb-git 0.1.dev1

commit de9a07844783b8e420fce6f9568e126dd7779e74

    Updated by tinydb-git 0.1.dev1

commit 3b31825cf312cb5d42f792998faddf20b634c7d9

    Updated by tinydb-git 0.1.dev1

在内部,数据以json的形式存储,使用sort_keys=Trueindent=2, 为了使diff更易于阅读并有助于压缩:

hiro@wintermute:example$ git diff master^ master
diff --git a/tinydb.json b/tinydb.json
index a27ff44..d9711f0 100644
--- a/tinydb.json
+++ b/tinydb.json
@@ -2,6 +2,15 @@
   "_default": {"1": {"text": "first record"
+    },
+    "2": {
+      "b": 2
+    },
+    "3": {
+      "c": 3
+    },
+    "4": {
+      "d": 4}}}\ No newline at end of file

山药

或者,数据可以存储为yaml,它允许 日期时间-要正确表示的实例:

>>> importtinydb>>> fromtinydb_git.yamlimportYAMLGitStoroage>>> db=tinydb.TinyDB('example',storage=YAMLGitStoroage)

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

推荐PyPI第三方库


热门话题
java访问私有字段而不使用getter方法?   使用PowerMockito在JavaEWSAPI中模拟测试拉订阅   启动活动时未保存java首选项并清除变量   java如何在servlet中检索子域?斯普林有帮手吗   java使用Docker从命令行构建Android项目   java Android,ActionBar后退按钮(setDisplayHomeAsUpEnabled(true))重新创建父活动   java在重用FileOutputStream时应该关闭流吗?   java使用RESTAPI将文件上载到s3 bucket   Java SOAP Web服务应用程序中的mysql用户登录方法不工作   java使用多个数字计算百分比并转换为长   java Android SQLiteDatabase查询忽略空格   java如何在Javafx中比较两个字段文本   java错误:未设置java_HOME,在Eclipse安装后找不到   java在安卓中保存对象   java如何使用jaxws从返回List<Object>的服务中检索值   java Google OAuth2 JWT令牌验证异常   SpringMVC中的JavaUTF8编码问题,当从JSP表单发送POST请求中的越南语信件时   java从webview重定向到安卓应用程序   JUnit 5中多个扩展的java顺序