基于 OO 的 Git 数据库
项目描述
因为用 git 做傻事是非常有趣的。
OGitM 是一个 ORM,但是作为整个映射基础的关系数据库已被一个可怕的尝试所取代,即在git中复制一个愚蠢的基本键值文档存储。任何人都不应使用此软件。请,为了人类的利益。
嗯什么?
Git 很有用,因为它既存储数据,又存储该数据的历史。这对于数据库来说可能是一个有用的属性。基于 git 编写一个完整的数据库很无聊,我应该尝试编写一个 ORM 来包装它。好吧,与其说是 ORM,不如说是 O……git M?
我该如何使用它?
导入模块,声明模型,然后开始!
>>> import tempfile; db_directory = tempfile.TemporaryDirectory()
>>>
>>> import ogitm
>>> class MyModel(ogitm.Model, db=db_directory.name):
... name = ogitm.fields.String()
... age = ogitm.fields.Integer(min=0)
>>>
>>> instance = MyModel(name="Bob", age=172)
>>> instance_id = instance.save()
>>> MyModel.find(name="Bob", age=172).first() == instance
True
>>> instance.age = -5
Traceback (most recent call last):
...
ValueError: Disallowed value -5 ...
我可以访问底层数据库吗?
是的。认识 gitdb 模块,它提供对基于文档的数据库的直接访问。使用可以用作 git 裸存储库的目录对其进行初始化,然后开始插入和获取。
>>> import tempfile; db_directory = tempfile.TemporaryDirectory()
>>>
>>> from ogitm import gitdb
>>> db = gitdb.GitDB(db_directory.name)
>>> doc_id = db.insert({'name': 'Jimmy', 'age': 45, 'car': False})
>>> db.get(doc_id) == {'name': 'Jimmy', 'age': 45, 'car': False}
True
不仅如此,您还可以搜索以前插入的文档。这些查询接受简单的标量参数,返回与查询具有相同值的所有文档,以及可以测试存在、比较等的更复杂的字典参数。
>>> doc_id = db.insert({'name': 'Bobbie', 'car': True})
>>> doc_id = db.insert({'name': 'Bertie', 'age': 26, 'car': False})
>>> {'name': 'Bobbie', 'car': True} in db.find_items({'car': True})
True
>>> doc_id = db.insert({'name': 'Jimmy'})
>>> db.find_items({'car': {'exists': False}}) == [{'name': 'Jimmy'}]
True
去做
文档。(文档字符串和手册)
派皮
关系?(你他妈的 wot m8?)
蟒蛇2
访问 git 的更好方法(Py2 可能需要,pypy 需要,这将使任何人都更容易从 PyPI 安装它)(参见 Dulwich)
很快开始版本控制
项目详情
下载文件
下载适用于您平台的文件。如果您不确定要选择哪个,请了解有关安装包的更多信息。
源分布
ogitm-0.1.0.tar.gz
(13.3 kB
查看哈希)
内置分布
ogitm-0.1.0-py3-none-any.whl
(11.5 kB
查看哈希)