objectbox是对象的超高速数据库

objectbox的Python项目详细描述


objectbox python api

objectbox是一个用于对象的超高速数据库,现在也可以通过一个简单的crud api用于python。

  • 最新版本:v0.1.0
  • python版本:3.4+
  • 支持的平台:
    • Linux 64位
    • Linux ARMV6HF(例如覆盆子Pi Zero)
    • Linux ARMV7HF(如覆盆子皮3)
    • MacOS 64位
    • Windows 64位

开始

首先,安装最新版本:

pip install --upgrade objectbox

要开始使用objectbox作为数据的存储,首先需要定义模型。 模型由用@Entitydecorator注释的python类组成。

型号标识和uid

每个实体都必须有一个id(实体间唯一)。 属性也需要一个id(在一个实体中是唯一的)。 实体和属性都必须有一个uid,它是全局唯一的标识符。

对于其他受objectbox支持的语言,绑定负责分配这些id/uid,但尚未为python实现此功能。 要了解更多信息,请参见objectbox java文档:https://docs.objectbox.io/advanced/meta-model-ids-and-uids

型号.py

fromobjectbox.modelimport*@Entity(id=1,uid=1)classPerson:id=Id(id=1,uid=1001)first_name=Property(str,id=2,uid=1002)last_name=Property(str,id=3,uid=1003)

使用objectbox

要实际使用数据库,可以使用刚刚定义的模型启动(或“构建”)数据库。 然后,您可以重用实例(ob,在下面的示例中)并使用它访问包含您的对象的“实体框”。

程序.py

importobjectbox# from mypackage.model import Person# Configure ObjectBox: should be done only once in the whole program and the "ob" variable should be kept aroundmodel=objectbox.Model()model.entity(Person,last_property_id=objectbox.model.IdUid(3,1003))model.last_entity_id=objectbox.model.IdUid(1,1)ob=objectbox.Builder().model(model).directory("db").build()# Open the box of "Person" entity. This can be called many times but you can also pass the variable aroundbox=objectbox.Box(ob,Person)id=box.put(Person(first_name="Joe",last_name="Green"))# Createperson=box.get(id)# Readperson.last_name="Black"box.put(person)# Updatebox.remove(person)# Delete

有关更多信息和代码示例,请参见tests文件夹。其他语言的文档也可以帮助您理解基础知识。

一些功能

  • 自动交易(符合ACID)
  • 批量操作

未来

您从其他objectbox语言绑定中了解到的好处,例如

  • 模型管理(无需手动设置id/uid)
  • 自动模型迁移(无架构升级脚本等)
  • 强大的查询功能
  • 关系(对一,对多)
  • 异步操作
  • 二级索引

贡献

目前,python绑定还处于早期阶段,其他语言中的许多可用功能都已丢失。 如果您有特定功能的请求,请打开一个问题。如果你想贡献,请随时打开公关。 如果这是一个不明显的贡献,最好先讨论和协调一个问题。

此回购协议在安装包时使用virtualenv,以防您还没有安装包:pip install virtualenv

使用pythonapi的主要先决条件是objectbox二进制库(.so、.dylib、.dll,具体取决于您的平台),它实际上实现了数据库功能。

库应该放在签出存储库的objectbox/lib/[architecture]/文件夹中。

从pip

获取objectbox c-api库

最简单的方法是从pypi的最新版本获取所有二进制文件。

pip download objectbox
unzip objectbox*.whl
cp -r objectbox/lib [/path/to/your/git/objectbox/checkout]/objectbox/  

从objectbox-c版本下载

或者,您可以从objectbox-c存储库获得适当的版本。 但是,您需要注意所需的版本-请参见objectbox/c.py中的required_version。 在ObjectBox C repository中,您应该找到一个可以运行的download.sh脚本。

wget https://raw.githubusercontent.com/objectbox/objectbox-c/master/download.sh
chmod +x download.sh
# replace [required_version] with the appropriate string then type N when the script asks about installing the library
./download.sh [required_version]
cp lib/*objectbox* [/path/to/your/git/objectbox/checkout]/objectbox/lib/$(uname -m)/

您可以运行make test以确保一切按预期工作。

许可证

Copyright 2019 ObjectBox Ltd. All rights reserved.

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.

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

推荐PyPI第三方库


热门话题
java如何使用Spring和JSF向客户端授予临时权限   java除了Array/ArrayList之外,还有其他保存矩阵元素的方法吗   java BeanValidation不适用于单选按钮   通过java程序连接到配置单元数据库时出错   java如何使用maven解决二级依赖关系   JfreeChart/Java中带有图例的数据表   合并数组时发生java运行时错误   安全性如何在JavaEE中保护WebSocket端点?   java有没有一种方法可以使用insert方法为树插入值   java编程“静态”的另一种方式:代码可以吗?   java阅读文本文件时如何跳过3行   %04X在C中的含义以及如何在java中编写   java我如何验证一个方法不是仅在一个测试范围内对模拟调用的?   java如何在mac中使用启动appium desktop 1.6.1。球棒   仅匹配最多10位小数的java正则表达式