Используйте существующий созданный график neo4j при каждом перезапуске сервера

#python #neo4j #py2neo

#python #neo4j #py2neo

Вопрос:

Я разработал веб-приложение с использованием neo4j (py2neo), Flask и HTML. Я создаю график Neo4j, читая файл csv. Размер этого CSV-файла больше. Поэтому всякий раз, когда я запускаю или перезапускаю сервер, график Neo4j создается каждый раз, и на эту настройку уходит много времени. Могу ли я в любом случае использовать созданный график и сохранить его на своем компьютере. Итак, структура моего проекта такова, что у меня есть модели.py, который содержит соединяющий график, создает график с отношениями и возвращает данные в routes.py .

Мой models.py выглядит так

 
from py2neo import Graph, Node, Relationship,NodeMatcher
import pandas as pd


class Query:
    "Model the tags"
    print("I am coming here")
    graph = Graph("http://blah:blah@127.0.0.1/db/data")
    print("hi i am second")
    
    try:
        graph.run("Match () Return 1 Limit 1")
        df=pd.read_csv("data.csv")
        print("I am not reading till")
        graph.delete_all()

        matcher = NodeMatcher(graph)
        row_count = len(df)      

        for i in range(row_count):            
            tags = df['tags'][i]
            each_tag = tags.split('|')
            tag_data = [x.lower() for x in each_tag]
            for j,first_tag in enumerate(tag_data[:-1]):
                match_first_tag = matcher.match("May21tag",tagName=first_tag).first()               
                graph.push(match_first_tag)
                for second_tag in tag_data[j 1:]:
                    my_tag = second_tag
                    second_tag = matcher.match("May21tag",tagName=second_tag).first()
                    graph.push(second_tag)                    
                    create_relationship = Relationship(match_first_tag ,"tagged",second_tag)
                    graph.merge(create_relationship)
    except Exception as e:
        print('not ok',e)

    def __init__(tech):
        tech_word = tech
        print("in init")

    def fetch_nodes(self,tech_word):
        graph = Graph("http://blah:blah@127.0.0.1/db/data")
        matcher = NodeMatcher(graph)
        match_nodes = matcher.match(tagName=tech_word).first()
        return (list(r.end_node["tagName"] for r in self.graph.match(nodes=(match_nodes,)).limit(6)))


  

Итак, что здесь происходит, всякий раз, когда я запускаю app.py Я вижу, что график и взаимосвязь создаются каждый раз. Так что это требует времени. Что мне здесь нужно, так это то, что я хотел использовать существующий график с отношениями всякий раз, когда я запускаю или перезапускаю сервер.

Ответ №1:

Попробуйте удалить все, Query кроме __init__ и fetch_nodes определений методов.