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

时间:2018-07-23 09:26:11

标签: flask cypher 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时,出现“参数丢失:预期参数:问题”错误

非常感谢

1 个答案:

答案 0 :(得分:0)

你快到了。

对于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引擎中的服务器上进行。为此,需要明确提供所有内容。