基于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密钥斗篷身份代理API   Java Swing在单击按钮后绘制连续的矩形   Java中的二进制求逆整数   Eclipse中调试单步执行时java窗口移动   来自JComboBox的java返回对象   发件人的java证书在签名验证之前过期   JavaSpring安全测试:检索令牌   使用JAI时的java别名   macos Java:1单击包含VM参数的Mac可执行文件   动态使用jpa存储库的java分片   JAVA Observer multiIHM的设计模式   java Graphics2D总是返回“NULL”   java在线性布局按钮之间垂直间隔“权重”   Java正则表达式:在带重音的文本中搜索不带重音的字符串   java如何从用户选择的时间生成通知   java在另一个RecyclerView中填充RecyclerView   java为什么findFirst()在找到的第一个元素为null时抛出NullPointerException?   java正在将包含十六进制0x00的字符串复制到剪贴板   Java:在Linux中安装GridWorld BugRunner