Использование python для создания отношений в Neo4j, но не все созданы - PullRequest
0 голосов
/ 11 февраля 2020

Я пытаюсь создать отношения на графике, который у меня есть на neo4j. Когда я запускаю код python, он запускается через файл Excel и для каждой строки создает отношения, основанные на двух столбцах идентификатора. Однако не все они созданы.

Например, когда я запускаю один файл Excel, содержащий 33 тыс. Строк, в базе данных создается только 7,5 тыс. Ребер.

Я проверил, что процесс выполняется работает правильно, что правильные значения передаются каждый раз в правильной функции / var, поэтому я действительно не могу думать о том, что здесь проблема.

Ниже приведен мой код, а также экран из Excel файл, чтобы вы могли видеть его структуру.

Код:

my_set = set()
graph = Graph(url,password=password)
tx = graph.begin()
rels = list()
filename = input('Give file name --- ')
df = pd.read_csv(filename, header=None)
df.columns = ['Timestamp', 'id1', 'id2']
if filename.startswith('attack'):
    rel_type = 'ATTACKS'
elif filename.startswith('trade'):
    rel_type = 'TRADES'
else:
    rel_type = 'MESSAGES'
row_cnt = 0
for index,row in df.iterrows():
    row_cnt = row_cnt + 1
    if row_cnt%1000 == 0 : print('Computed '+ str(row_cnt))
    t1 = datetime.now()
    ts = int(row['Timestamp'])
    formatted_ts = datetime.utcfromtimestamp(ts).strftime('%Y-%m-%d %H:%M:%S')
    splitted_ts = formatted_ts.split()
    date = splitted_ts[0]
    time = splitted_ts[1]  

    node1 = graph.evaluate('MATCH (n:User) WHERE n.id={id} RETURN n', id=int(row["id1"]))
    node2 = graph.evaluate('MATCH (n:User) WHERE n.id={id} RETURN n', id=int(row['id2']))
    rels.append(Relationship(node1, rel_type, node2, date=date, time=time))

print('FileFInished************')
print('Computed ' + str(row_cnt))
edge_cnt = 0
for v in rels:
    edge_cnt = edge_cnt + 1
    if edge_cnt%1000==0: print('edge count: ', edge_cnt)
    tx.create(v)
tx.commit()
print('edges: ' + str(edge_cnt))

Файл Excel (3 столбца, не удалось опубликовать изображение извините):

____________________________
|Timestamp| userId1 | userId2|
------------------------------
|123342312| 3123    | 12312  |
|33121123 | 332     | 21231  |
...