基于oo的git数据库

ogitm的Python项目详细描述


因为用git做愚蠢的事情非常有趣。

Build StatusCoverage StatusDocumentation Status

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)
  • 很快就开始版本控制

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

推荐PyPI第三方库


热门话题
java出现编译错误,我不理解   java在gnu-trove库中是否有任何有序映射?   java Servlet应该有映射,但找不到Servlet   java时间和第二期显示1:10,而不是13:10   java Play Framework 1.2.7 Heroku更新崩溃   线程“main”java中的opencsv异常。lang.NoClassDefFoundError:org/apache/commons/lang3/ObjectUtils   selenium在java中隐藏警告消息   java使用ID引用将JSON实体反序列化为POJO   java无法在JRE 8中加载字体   一个线程中的异常/错误会使整个应用程序停止吗?   java访问重复子规则的元素标签;e、 g.用ANTLR解析(1,2,3)中的a   java如何从平移旋转中找到新坐标   使用HTML Java小程序托管jar文件存在安全问题   java如何按频率而不是字母顺序排列字符串数组   java清除bufferedReader和块以获得更多输入   java解密SAML2断言