数据库读取和写入操作的结果必须先进行适当处理,然后才能用于应用程序。
返回Response
有些方法(如gql()和uql())返回一个Response对象。为在应用中使用其中包含的数据,首先要从Response对象提取DataItem,再将DataItem转换成一个合适的驱动数据类。
一个Response对象有以下属性:
属性 |
类型 |
描述 |
|---|---|---|
aliases |
List[Alias] |
结果别名列表;每个Alias包括属性name和type |
items |
Dict[str, DataIem] |
一个字典,键是别名名称,值是别名代表的数据 |
explainPlan |
ExplainPlan |
执行计划 |
status |
Status |
执行状态,包括属性code和message |
statistics |
Statistics |
执行的统计信息,包括属性nodeAffected、edgeAffected、totalCost和engineCost |
提取DataItem
使用get()或alias()方法从一个Response对象提取DataItem。
一个DataItem对象有以下属性:
属性 |
类型 |
描述 |
|---|---|---|
alias |
str | 别名名称 |
type |
ResultType |
结果类型 |
entities |
any | 结果数据 |
get()
通过别名索引获取数据。
参数
index: int:别名索引。
返回值
DataItem:返回的数据。
response = Conn.gql("MATCH (n)-[e]->() RETURN n, e LIMIT 3")
print(response.get(0).toJSON())
GQL语句返回n和e两个别名;get()方法获取与索引为0的别名n对应的DataItem。
{"alias": "n", "entities": [{"uuid": 72059793061183504, "id": "ULTIPA800000000000003B", "schema": "account", "values": {"gender": "female", "industry": "Publishing", "name": "Velox", "year": 1976}}, {"uuid": 648520545364606993, "id": "ULTIPA800000000000003E", "schema": "account", "values": {"gender": "female", "industry": "Food&Beverage", "name": "Claire", "year": 1989}}, {"uuid": 720578139402534937, "id": "ULTIPA8000000000000050", "schema": "account", "values": {"gender": "male", "industry": "Education", "name": "Holly", "year": 2000}}], "type": "NODE"}
alias()
通过别名名称获取数据。
参数
alias: str:别名名称。
返回值
DataItem:返回的数据。
response = Conn.gql("MATCH (n)-[e]->() RETURN n, e LIMIT 3")
print(response.alias("e").toJSON())
GQL语句返回n和e两个别名;alias()方法获取别名e对应的DataItem。
{"alias": "e", "entities": [{"schema": "agree", "uuid": 139, "fromId": "ULTIPA800000000000000E", "toId": "ULTIPA800000000000000D", "fromUuid": 6269012880322985990, "toUuid": 7998395137233256453, "values": {"targetPost": 905, "timestamp": 1572662452, "datetime": "2019-11-02 18:40:52"}}, {"schema": "agree", "uuid": 167, "fromId": "ULTIPA800000000000000E", "toId": "ULTIPA800000000000000F", "fromUuid": 6269012880322985990, "toUuid": 8214567919347040263, "values": {"targetPost": 1419, "timestamp": 1554431053, "datetime": "2019-04-05 18:24:13"}}, {"schema": "agree", "uuid": 15, "fromId": "ULTIPA8000000000000065", "toId": "ULTIPA8000000000000067", "fromUuid": 6629300850512625701, "toUuid": 5764609722057490465, "values": {"targetPost": 1374, "timestamp": 1552775174, "datetime": "2019-03-17 14:26:14"}}], "type": "EDGE"}
转换DataItem
使用一个as<DataStructure>()方法将DataItem.entities转换成对应的驱动数据类。
例如,以下请求中的GQL语句从图中获取三个点,asNodes()方法将与别名n对应的DataItem转换成一个Node对象列表:
response = Conn.gql("MATCH (n) RETURN n LIMIT 3")
nodeList = response.alias('n').asNodes()
for node in nodeList:
print(node.getID())
以下是DataItem所有的转换方法。请留意每种方法适用的DataItem.type和DataItem.alias。
方法 |
DataItem.type |
DataItem.alias |
返回 |
描述 |
|---|---|---|---|---|
asNodes() |
NODE | 任何 | List[Node] |
转换成Node对象列表 |
asFirstNode() |
NODE | 任何 | Node |
将返回的第一个结果数据转换成一个Node对象 |
asEdges() |
EDGE | 任何 | List[Edge] |
转换成Edge对象列表 |
asFirstEdge() |
EDGE | 任何 | Edge |
将返回的第一个结果数据转换成一个Edge对象 |
asGraph() |
GRAPH | 任何 | Graph |
转换成一个Graph对象 |
asGraphSets() |
TABLE | _graph |
List[GraphSet] |
转换成GraphSet对象列表 |
asSchemas() |
TABLE | _nodeSchema, _edgeSchema |
List[Schema] |
转换成Schema对象列表 |
asProperties() |
TABLE | _nodeProperty, _edgeProperty |
List[Property] |
转换成Property对象列表 |
asAttr() |
ATTR | 任何 | Attr |
转换成一个Attr对象 |
asTable() |
TABLE | 任何 | Table |
转换成一个Table对象 |
asHDCGraphs() |
TABLE | _hdcGraphList |
List[HDCGraph] |
转换成HDCGraph对象列表 |
asAlgos() |
TABLE | _algoList |
List[Algo] |
转换成Algo对象列表 |
asProjections() |
TABLE | _projectionList |
List[Projection] |
转换成Projection对象列表 |
asIndexes() |
TABLE | _nodeIndex, _edgeIndex, _nodeFulltext, _edgeFulltext |
List[Index] |
转换成Index对象列表 |
asPrivilieges() |
TABLE | _privilege |
List[Priviliege] |
转换成Priviliege对象列表 |
asPolicies() |
TABLE | _policy |
List[Policy] |
转换成Policy对象列表 |
asUsers() |
TABLE | _user |
List[User] |
转换成User对象列表 |
asProcesses() |
TABLE | _top |
List[Process] |
转换成Process对象列表 |
asJobs() |
TABLE | _job |
List[Job] |
转换成Job对象列表 |
返回ResponseWithExistCheck
有些方法(如createGraphIfNotExist())返回一个ResponseWithExistCheck对象。
一个ResponseWithExistCheck对象有以下属性:
属性 |
类型 |
描述 |
|---|---|---|
exist |
bool | 要创建的对象是否已经存在 |
response |
Response |
主要请求结果 |
返回InsertResponse
有些数据插入方法(如insertNodesBatchBySchema()和insertNodesBatchAuto())返回一个InsertResponse对象。
一个InsertResponse对象有以下属性:
属性 |
类型 |
描述 |
|---|---|---|
ids |
List[str] | 插入的点_id列表;请留意,InsertRequestConfig.silent为True时列表为空 |
uuids |
List[int] | 插入的边_uuid列表;请留意,InsertRequestConfig.silent为True时列表为空 |
errorItems |
Dict[int,InsertErrorCode] |
错误信息字典,键是发生错误的点或边的顺序索引,值是错误代码 |
status |
Status |
执行状态,包括属性code和message |
statistics |
Statistics |
执行的统计信息,包括属性nodeAffected、edgeAffected、totalCost和engineCost |
返回JobResponse
有些方法(如createFulltext())返回一个JobResponse对象。
一个JobResponse对象有以下属性:
属性 |
类型 |
描述 |
|---|---|---|
jobId |
str | 执行的作业ID |
status |
Status |
执行状态,包括属性code和message |
statistics |
Statistics |
执行的统计信息,包括属性nodeAffected、edgeAffected、totalCost和engineCost |
返回驱动数据类
一些方法直接返回驱动数据类的一个实例或一个列表,可直接使用。例如:
getGraph()方法返回一个GraphSet对象。showGraph()方法返回List[GraphSet]。