gremlin python过滤器由gte或lte

时间:2018-05-04 18:29:51

标签: gremlin tinkerpop3 amazon-neptune

我正在尝试找到一个顶点,该顶点具有一个名为last_time_stamp的属性,该属性介于last_time_stamp和last_timestamp - 1hour之间。下面的查询似乎在AWS Neptune中有效,但在Gremlin Python脚本中失败。

我认为它失败了,因为'是'这个词是在python中保留的。是否有另一种方法来编写查询以实现所需的结果?提前致谢

适用于AWS Neptune:

g.V().has('private_ip_address', '10.2.55.24').values('last_time_stamp').is(gte('2018-05-01T13:06:52')).is(lte('2018-05-02T08:05:52'))

Gremlin-Python功能:

#Need to handle public and internal on prem ips
def add_edge(label, account, interfaceid, srcaddr, dstaddr, srcport, dstport, protocol, packets, txbytes, starttime, endtime, action, logstatus):

datetime_object = datetime.strptime(starttime, '%Y-%m-%dT%H:%M:%S')
last_hour_date_time = datetime_object - timedelta(hours = 1)
endtime = last_hour_date_time.strftime('%Y-%m-%dT%H:%M:%S')
print(endtime)

v1 = g.V().has('private_ip_address', srcaddr).values('last_time_stamp').is(g(endtime)).is(lte(starttime)).toList()

v2 = g.V().has('private_ip_address', dstaddr).values('last_time_stamp').is(gte(endtime)).is(lte(starttime)).toList()

print('v1:', v1)
print('v2:', v2)

我试过的另一个例子是:

   v1 = g.V().has('private_ip_address', srcaddr).has('last_time_stamp', P.gte(endtime)._and(lte(starttime))).toList()

1 个答案:

答案 0 :(得分:3)

您不需要is()的解决方法。在Gremlin Python中,与Python保留字冲突的步骤仅以下划线为后缀。因此,您将使用is_()