pyorient
简介
pyorient是orientdb的python库
该库提供两种访问orientdb的方式:1、client 的方式
2、ogm 的方式(类似于ORM)
由于OGM 封装了client,且由于OGM 易于理解,操作简单,所以,这里主要介绍OGM。
创建/连接数据库
导入OGM 所需模块
from pyorient.ogm import Graph, Config
实例化 graph
config = Config.from_url('/localhost/test','root','root')
graph = Graph(config,'admin','admin')
注 :
- config 中的两个 root 分别为orientdb 实例的用户名和密码。类似于如下命令
orientdb > connect remote:localhost root root
graph 中的两个 admin 即想要连接的数据库的用户名和密码
- 由于Graph() 会调用open 方法,所以,如果数据库中没有将要连接的数据库,那么就会创建一个新的,相应的数据库。
操作数据库
映射
和ORM类似,OGM会将 python 代码中的 class 映射到orientdb中的class。相当于关系型数据库中的表;python中class的属性即为orientd中class的property。即相当于关系型数据库中表的字段/列
想要将python中的class 映射到orientdb 中的class,需要将python中的class进行注册。
代码如下:
from pyorient.ogm.declarative import declarative_node, declarative_relationship
Node = declarative_node()
Relationship = declarative_relationship()
class Person(Node):
pass
class Likes(Relationship):
pass
graph.create_all(Node.registry)
graph.create_all(Relationship.registry)
注:
- 每一次调用declarative_node( ) 和 declarative_relationship( ) 都会生成相应的注册表。其实Node和Relationship是两个基类。
- create_all( ) 命令就会在orientdb中创建相应的class,如果该class已经存在,那么就会更新该class。
Boker (代理)
OGM 拥有多层映射。
上面提到的python class 到 orientdb class 是一层映射。另一层映射是python class 的object(对象) 和orientdb中具体的 vertex 和 edge 之间的映射。Boker 即工作在这一层。该层映射成功后,会自动为每一个class 创建个一个boker对象。需要注意的是vertex类需要有element_plural 属性,relationship类需要有 label 属性。
代码如下:
class Foo(Node):
element_plural = 'foos'
name = String()
class Friend(Relationship):
label = 'friends'
graph.include(Node.registry)
graph.foos.create(name='Bar')
Foo.objects.create(name='Baz')
find_bar = graph.foos.query(name='Bar')
注
- graph.foos 和Foo.objects 都是一样的,都是boker对象。
- Relationship 的子类,在orientdb中 是用 label 来命名类名的。如 Friend 类在数据库中的类名为friends
- query() 反回的是一个查询集对象。
命令
inE() outE() bothE()
返回进/出/进出自一个顶点或者类的 边的对象
in_() out() both()
返回 进/出/进出 自一个边的或者类的 顶点的对象。
get_vertex() get_edge() get_element()
获取 顶点/边/顶点或者边
element 包括顶点和边两种对象。
create_class() create_vertex() create_edge() drop_class()
创建 顶点或边/顶点/边 ; 删除类
open() drop()
打开/关闭一个数据库
注 : 调用open( )时,如果该数据库不存在,则自动创建。
调用drop( ) 时,需要有一个已经打开的数据库。
query()
返回一个query对象。具有all count group_by order_by filter 等方法,可以对查询结果进行处理。
update() clear_registry()
更新python中orientdb对象的元素注册表 /清除元素注册表
字段类型
在OGM中,python类的属性就是orientdb 的property,也就是相当于关系型数据库中的字段/列。在pyorient中,字段类型有 String Boolean Float Date 等类型。这些字段又有如下属性。
name 会覆盖掉 “=” 前面命名的属性名。
nullable 允许为空
readonly 只读
default 默认值
indexed 是否为索引值
unique 是否唯一,如果为真,那么会创建相应的索引。
mandatory 是否强制有值。如果没有设置可以为空,那么默认设定为强制有值。
pyorient的更多相关文章
随机推荐
- Java Web Service 学习笔记
一.服务端 1. 创建Java工程 2. 创建接口HostipalServiceInterface package ws_server; import javax.jws.WebMethod; imp ...
- 利用windows server 2012 R2的Hyper-V搭建多个虚拟机的 Dynamics CRM 环境知识点小结
一.需要掌握网络的知识,域真正的意义,防火墙等其他知识,这些知识我还需要加强,下面是我和同事的结果,不对的地方大家可以指出来,谢谢. 1.安装好的CRM2011环境,必须先打Update Rollup ...
- windows任务计划程序 坑
- ASP.NET Web Pages:文件夹
ylbtech-.Net-ASP.NET Web Pages:文件夹 1.返回顶部 1. ASP.NET Web Pages - 文件夹 本章介绍有关文件夹和文件夹路径的知识. 在本章中,您将学到: ...
- tomcat 加载顺序 web.xml文件详解
一. 1.启动一个WEB项目的时候,WEB容器会去读取它的配置文件web.xml,读取<listener>和<context-param>两个结点. 2.紧急着,容创建一个Se ...
- [UE4]动画事件
在动画中添加事件通知,在动画蓝图中就可以使用这个事件通知: 在动画蓝图中可以使用“Try Get Pawn Owner”取得控制的角色实例 在Controller中,可以使用“Get Controll ...
- Scrapyd发布爬虫的工具
Scrapyd Scrapyd是部署和运行Scrapy.spider的应用程序.它使您能够使用JSON API部署(上传)您的项目并控制其spider. Scrapyd-client Scrapyd- ...
- 第2课 C 到 C++ 的升级
1. C与C++的关系 (1)C++继承了所有的C特性,并在C的基础上提供了更多的语法和特性. (2)C++的设计目标是运行效率与开发效率的统一,它更强调的是语言的实用性. 2. C到C++ 的升级 ...
- VFS文件系统结构分析
VFS是Linux非常核心的一个概念,linux下的大部分操作都要用到VFS的相关功能.这里从使用者的角度,对VFS进行了简单说明.使用者不但需要知道Linux下有哪些文件操作的函数,还需要对VFS的 ...
- django (装饰器,母版继承,自定义,request对象,response对象)
1. 装饰器 1. def wrapper(fn): def inner(*args,**kwargs): 执行被装饰函数之前的操作 ret = fn(*args,** ...