基于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我所拥有的gc输出的良好gc调优策略是什么?   java无法在Tomcat7和JBoss7上部署GWT应用程序   java Alexa在自定义技能中不停止音频播放   在Wildfly 10中找不到无状态Bean中的java JNDI   如何下载没有水印的tiktok视频Android java   java Neo4j高级映射SDN   java返回材料选择器   尝试设置列表项的边距时出现java ClassCastException   java处理如何绘制x/y轴大于窗口宽度/高度的散点图   apache poi HSSF工作手册java。lang.IllegalArgumentException:指定的规则不能超过3条   java如何使用嵌入式字体调用Graphics2D。抽绳(…)使用iText(DefaultFontMapper?)   jsp以字母顺序获取java对象集合   使用php for java创建Web服务(XML)   java Hibernate批删除与单次删除   java设置类似Google Chrome的活动(带有单选按钮的子菜单)   JavaRxJava:带有条件的代码   java Dalvik和无序写入