基于oo的git数据库
ogitm的Python项目详细描述
因为用git做愚蠢的事情非常有趣。
ogitm是一个orm,但其中关系数据库是整个 映射已经被一个可怕的尝试所取代,它试图复制一个愚蠢的基本 键值文档存储在git中。这个软件不应该被 任何人。拜托,为了人类的利益。
呃…什么?
git很有用,因为它同时存储数据和该数据的历史记录。 对于数据库来说,这可能是一个有用的属性。写一个整体 基于git的数据库很无聊,我应该尝试编写一个orm来包装 它。好吧,它不会是一个虫子,更会是一个O…Git M?
我怎么用这个?
导入模块,声明您的模型,然后开始!
>>> importtempfile;db_directory=tempfile.TemporaryDirectory()>>> >>> importogitm>>> classMyModel(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()==instanceTrue >>> instance.age=-5Traceback (most recent call last): ...ValueError: Disallowed value -5 ...
我能查一下基础数据库吗?
是的。使用gitdb模块,它提供对基于文档的 数据库。用一个可以用作git bare的目录初始化它 存储库,并开始插入和获取。
>>> importtempfile;db_directory=tempfile.TemporaryDirectory()>>> >>> fromogitmimportgitdb>>> 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}indb.find_items({'car':True})True >>> doc_id=db.insert({'name':'Jimmy'})>>> db.find_items({'car':{'exists':False}})==[{'name':'Jimmy'}]True
待办事项
- 文件。(文档字符串和手册)
- PYPI
- 关系?(U F*cking wot m8?)
- Python2
- 更好的访问git的方式(py2可能需要,pypy需要,will 使任何人都可以更容易地从pypi安装它(请参阅dulwich)
- 很快就开始版本控制