缺少参数:预期参数:Flask Python Py2neo

Parameter Missing: Expected parameter(s): Flask Python Py2neo

我刚刚开始使用 Python、Flask 和 Neo4j。我正在努力尝试通过 py2neo 将参数从 url 传递给密码查询。

我尝试了 github 上论坛、教程和示例中的一些建议,但未能成功,希望有人能为我指明正确的方向。

这是views.py

#Single Comic
@app.route('/comic/<issue>/')
def comic(issue):

    # Get comic
    issue = comics.get_issue(issue)

    return render_template('issue.html', issue=issue)

这是我的 models.py(如果我将问题编号硬编码到查询中,它会正确显示)

 class comics:
    def __init__(self, issue):
       self.issue = issue;

    def get_issue(issue):
        query = '''
        MATCH (c:Comic) WHERE c.Issue=$issue
        RETURN c.Issue as issue, c.Title as title
        '''
        return graph.run(query)

这是 issue.html 模板

{% extends "base.html" %}
{% block content %}
  {% for row in issue %}
        <h1>{{ row.issue }}: {{ row.title }} </h1>
        <img src="/static/comics/{{ row.issue }}.png" alt="{{ row.title }}">
        {% endfor %}

{% endblock %}

当我尝试浏览 www.mydomain.com/comic/1 时,出现 "Parameter Missing: Expected parameter(s): issue" 错误

非常感谢

你快到了。

对于 Cypher 替换,您只需将参数作为关键字参数传递给 graph.run。所以你最终会得到类似的东西:

class comics:
    def __init__(self, issue):
       self.issue = issue;

    def get_issue(issue):
        query = '''
        MATCH (c:Comic) WHERE c.Issue=$issue
        RETURN c.Issue as issue, c.Title as title
        '''
        return graph.run(query, issue=issue)

您似乎希望从封闭范围吸收变量,但这是一个远程查询,其中语句模板和参数都通过网络传输。所以驱动程序不进行替换,它发生在服务器上,在 Cypher 引擎中。为此,需要明确提供所有内容。