Файл Cypher в качестве параметра в py2neo python - PullRequest
0 голосов
/ 02 марта 2020

Я пытаюсь передать файл cypher в качестве параметра в py2neo, чтобы переменные в запросах были другими параметрами. Вместо:

from py2neo import Graph

graph = Graph(password = "*****")

def test(some_things):
    result = graph.run(
                "MATCH (movie:movies)"
                "where movie.name =~ $name "
                "RETURN movie",{"name":"(?i).*" + some_things+ ".*"})
    return result

Мне интересно, есть ли что-то вроде этого:

from py2neo import Graph

graph = Graph(password = "*****")

def test(some_things):
    result = graph.run("some_cypher.cypher", some_things)
    return result

, где some_cypher.cypher может быть:

MATCH (movie:movies) where movie.name =~ $name RETURN movie, ,{"name":"(?i).*" + ?+ ".*"}

с ? являющийся параметром для замены в файле python на some_things.

Ответы [ 2 ]

0 голосов
/ 04 марта 2020

Хотя встроенной опции для чтения непосредственно из файла в py2neo нет, существует механизм получения последовательности параметров по вашему желанию. Итак, остается только использовать функцию для чтения запроса из файла и использования параметров. Это должно выглядеть примерно так:

from py2neo import Graph

graph = Graph(password = "*****")


def run_query_from_file(cypher_file_path,  parameters=None, **kwparameters):
    with open(cypher_file_path, 'r') as cypher_file:
          cypher_query = cypher_file.read().strip()
    graph.run(cypher_query, parameters)

def test1(dict_of_parameters):
    result = run_query_from_file("some_cypher.cypher", dict_of_parameters)
    return result

def test2(**kwparameters):
    result = run_query_from_file("some_cypher.cypher", **kwparameters)
    return result

# Both should work
test1({'username': 'abc', 'password': '123'})
test2('username'='abc', 'password'='123')

, где some_cypher.cypher содержит:

MERGE (user: User {username: $ username}) WITH user, user. пароль как user_password SET user.password = $ пароль RETURN user_password

0 голосов
/ 03 марта 2020

Нет такой функциональности, встроенной в py2neo. Вам придется свернуть свою собственную функцию, если вы хотите это сделать.

...