Получение пар <ключ, значение> из узла Titan Graph

Я использую 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

Я хочу запрограммировать базу данных Titan Graph из моей программы на python. Для этого я использую пакет лампочек.

Я создаю 3 типа вершин из Python, используя луковицы, как указано ниже. 3 типа вершин

- switch
- port
- device

 from bulbs.titan import Graph
 vswitch = self.g.vertices.get_or_create('dpid',dpid_str,{'state':'active','dpid':dpid_str,'type':'switch'})
 vport   = self.g.vertices.get_or_create('port_id',port_id,{'desc':desc,'port_id':port_id,'state':state,'port_state':port_state,'number':number,'type':'port'})

Если я пытаюсь распечатать переменные vswitch, vport и vdevice, я получу следующие результаты.

vswitch     <Vertex: http://localhost:8182/graphs/graph/vertices/4>
vport       <Vertex: http://localhost:8182/graphs/graph/vertices/28>

Однако, если я пытаюсь получить вышеуказанные вершины, используя ключ следующим образом.

vswitch = self.g.vertices.index.lookup(dpid=dpid_str)
vport   = self.g.vertices.index.lookup(port_id=port_id_str)

for s in vswitch
     print s

Here 's' prints the the node `<Vertex: http://localhost:8182/graphs/graph/vertices/4>`
which is expected.How do I extract the key-value pairs from this node?

'dpid'  : dpid_str,
'state' :'active',
'type'  :'switch'

1 ответ

Решение
>>> switches = self.g.vertices.index.lookup(dpid=dpid_str)
>>> ports    = self.g.vertices.index.lookup(port_id=port_id_str)

for s in switches
     print s.dpid, s.state, s.type
     print s.data()

... или используйте index.get_unique() вместо index.lookup(), если вершина уникальна (возвращает только одно значение)...

 >>> switch = self.g.vertices.index.get_unique(dpid=dpid_str)
 >>> print switch.dpid, switch.state, switch.type
 >>> print switch.data()

Посмотрите Лампочки Docs и Quickstart для больше:

Другие вопросы по тегам