Фильтр Gremlin python по gte или lte - PullRequest
0 голосов
/ 04 мая 2018

Я пытаюсь найти вершину, которая имеет свойство last_time_stamp, которое находится между диапазоном last_time_stamp и last_timestamp - 1 час. Похоже, что приведенный ниже запрос работает в AWS Neptune, но не выполняется в скрипте Gremlin Python.

Я верю, что это не так, потому что слово "is" зарезервировано в 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'))

Функция Гремлин-Питон:

#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 голосов
/ 05 мая 2018

Обходной путь для is() не требуется. В Gremlin Python к шагам, конфликтующим с зарезервированными словами Python, просто добавляется символ подчеркивания. Таким образом, вы бы использовали is_().

...