def addIndex(self, label, field):
     url = self.url + "/index/" + label
     response = requests.post(url,
                              json={"field": field},
                              auth=(self.user, self.password))
     raise_for_status(response)
     return response.json()
 def execute(self):
     payload = "\n".join(self.elements)
     response = requests.post(self.url,
                              data=payload,
                              auth=(self.user, self.password))
     raise_for_status(response)
     return response.json()
示例#3
0
 def deleteGraph(self, name):
     """
     Delete graph.
     """
     response = requests.delete(self.url + "/" + name)
     raise_for_status(response)
     return response.json()
示例#4
0
 def addGraph(self, name):
     """
     Create a new graph.
     """
     response = requests.post(self.url + "/" + name, {})
     raise_for_status(response)
     return response.json()
示例#5
0
 def getEdge(self, gid):
     """
     Get an edge by id.
     """
     url = self.url + "/edge/" + gid
     response = requests.get(url)
     raise_for_status(response)
     return response.json()
示例#6
0
 def deleteEdge(self, gid):
     """
     Delete an edge from the graph.
     """
     url = self.url + "/edge/" + gid
     response = requests.delete(url)
     raise_for_status(response)
     return response.json()
示例#7
0
 def getVertex(self, gid):
     """
     Get a vertex by id.
     """
     url = self.url + "/vertex/" + gid
     response = requests.get(url)
     raise_for_status(response)
     return response.json()
示例#8
0
 def deleteVertex(self, gid):
     """
     Delete a vertex from the graph.
     """
     url = self.url + "/vertex/" + gid
     response = requests.delete(url)
     raise_for_status(response)
     return response.json()
示例#9
0
 def addVertex(self, gid, label, data={}):
     """
     Add vertex to a graph.
     """
     payload = {"gid": gid, "label": label, "data": data}
     response = requests.post(self.url + "/vertex", json=payload)
     raise_for_status(response)
     return response.json()
示例#10
0
 def listIndices(self):
     url = self.url + "/index"
     response = requests.get(url, stream=True)
     raise_for_status(response)
     output = []
     for result in response.iter_lines():
         d = json.loads(result)
         output.append(d)
     return output
示例#11
0
 def aggregate(self, aggregations):
     if not isinstance(aggregations, list):
         aggregations = [aggregations]
     payload = {
         "aggregations": aggregations,
     }
     url = self.url + "/aggregate"
     response = requests.post(url, json=payload)
     raise_for_status(response)
     return response.json()["aggregations"]
示例#12
0
 def addEdge(self, src, dst, label, data={}, gid=None):
     """
     Add edge to the graph.
     """
     payload = {"from": src, "to": dst, "label": label, "data": data}
     if gid is not None:
         payload["gid"] = gid
     response = requests.post(self.url + "/edge", json=payload)
     raise_for_status(response)
     return response.json()
示例#13
0
 def listGraphs(self):
     """
     List graphs.
     """
     response = requests.get(self.url, stream=True)
     raise_for_status(response)
     output = []
     for line in response.iter_lines():
         output.append(json.loads(line)['graph'])
     return output
示例#14
0
 def __stream(self):
     """
     Execute the query and return an iterator.
     """
     response = requests.post(self.url,
                              json={"query": self.query},
                              stream=True)
     # response.raise_for_status()
     raise_for_status(response)
     for result in response.iter_lines():
         try:
             d = json.loads(result)
             if "vertex" in d:
                 yield AttrDict(d["vertex"])
             elif "edge" in d:
                 yield AttrDict(d["edge"])
             elif "aggregations" in d:
                 yield AttrDict(d["aggregations"]["aggregations"])
             elif "selections" in d:
                 d = d["selections"]["selections"]
                 for k in d:
                     if "vertex" in d[k]:
                         d[k] = d[k]["vertex"]
                     elif "edge" in d[k]:
                         d[k] = d[k]["edge"]
                 yield AttrDict(d)
             elif "render" in d:
                 if isinstance(d["render"], dict):
                     yield AttrDict(d["render"])
                 else:
                     yield d["render"]
             elif "count" in d:
                 yield AttrDict(d)
             else:
                 yield d
         except ValueError as e:
             print("Can't decode: %s" % (result), file=sys.stderr)
             raise e