Ошибка типа: Neo4j не поддерживает параметры PackStream типа int64 - PullRequest
3 голосов
/ 30 октября 2019

Я пишу простую систему рекомендаций, используя neo4j Graph Database. Я использую py2neo lib, это моя программа:

...
for m,row in movie.iterrows() :
    tx.run(statement1, {"A": row.loc['id'], "B": row.loc['title'], "C": row.loc['IMDb url']})

    is_genre = row.iloc[-19:]==1
    related_genres = genre[is_genre].axes[0].values

    for g in related_genres :
        tx.run(statement2, {"A": row.loc['id'], "B": row.loc['title'], "C": row.loc['IMDb url'], "D": g})
    if m%100==0 : tx.process()
tx.commit()

Затем возникает ошибка:

Traceback (most recent call last):
  File "c:\Users\quy.lv\Desktop\He_thong_goi_y\He_thong_goi_y_phim.py", line 48, in <module>
    tx.run(statement2, {"A": row.loc['id'], "B": row.loc['title'], "C": row.loc['IMDb url'], "D": g})
  ...
TypeError: Neo4j does not support PackStream parameters of type int64

Кажется, что это происходит в строке: tx.run(statement2, {"A": row.loc['id'], "B": row.loc['title'], "C": row.loc['IMDb url'], "D": g})

Может кто-нибудь помочь мне исправить это. Спасибо!

1 Ответ

0 голосов
/ 12 ноября 2019

Я решил это, добавив int () для преобразования типа np.int64 в тип int, например:

tx.run(statement1, {"A": int(row.loc['id']), "B": row.loc['title'], "C": row.loc['IMDb url']})
...