我正在使用TitanGraphDB + Cassandra。我按如下方式启动Titan
cd titan-cassandra-0.3.1
bin/titan.sh config/titan-server-rexster.xml config/titan-server-cassandra.properties
我有一个Rexster外壳,可以用来与上面的Titan + Cassandra通信。
cd rexster-console-2.3.0
bin/rexster-console.sh
我想通过我的python程序对Titan Graph DB进行编程。
from bulbs.titan import Graph
我想用get_or_create()替换我的create()调用
我在网上看到了以下示例。
james = g.vertices.create(name="James")
如下所示编写。
james = g.vertices.get_or_create('name',"James",{'name':'james')
现在,我的顶点创建函数如下。
self.g.vertices.create({ 'desc':desc,
'port_id':port_id,
'state':state,
'port_state':port_state,
'number':number,
'type':'port'} )
如果我想重写上面的函数调用(
create()
),它使用get_or_create()
接受多个键值对我首先需要创建一个密钥,或者默认情况下它会检查所有属性。
我是python的初学者,我真的不了解
get_or_create('name',"James",{'name':'james')
为什么要这样指定函数属性?
get_or_create()的函数定义为here
任何帮助将不胜感激。
最佳答案
Bulbs的“ get_or_create()”方法在索引中查找顶点,如果不存在则创建它。您可以像使用get_or_create()
一样提供dict
数据库属性的Python create()
。
看到...
http://bulbflow.com/docs/api/bulbs/element/#vertex-proxy
https://github.com/espeed/bulbs/blob/master/bulbs/element.py#L584
这里有一些例子...
>>> # a vertex where name is "James" doesn't exist so lookup() returns None
>>> g.vertices.index.lookup("name", "James")
None
>>> # a vertex where name is "James" doesn't exist so a vertex is created
>>> data = dict(name="James", city="Dallas")
>>> james = g.vertices.get_or_create("name", "James", data)
>>> james.data()
{'city': 'Dallas', 'name': 'James'}
>>> james.eid # returns the element ID for the james vertex
>>> 1
>>> # a vertex where name is "James" DOES exist so vertex is returned unmodified
>>> data = dict(name="James", city="Dallas", age=35)
>>> james = g.vertices.get_or_create("name", "James", data)
>>> james.data() # note age=35 was not added to the vertex properties
{'city': 'Dallas', 'name': 'James'}
>>> # one way to update the vertex properities
>>> james.age = 35
>>> james.save()
>>> james.data()
>>> {'city': 'Dallas', 'age': 35, 'name': 'James'}
>>> # a way to update the vertex properties if you only have the vertex ID
>>> # the vertex ID for the james vertex is 1
>>> data = dict(name="James", city="Dallas", age=35)
>>> g.vertices.update(1, data)
>>> james = g.vertices.get(1)
>>> james.data()
>>> {'city': 'Dallas', 'age': 35, 'name': 'James'}
关于python - 灯泡:用get_or_create()替换create(),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/24158348/