【问题标题】:Parameter Missing: Expected parameter(s): Flask Python Py2neo缺少参数:预期参数:Flask Python Py2neo
【发布时间】:2018-12-30 17:04:03
【问题描述】:

我刚刚开始使用 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 时,我收到“参数缺失:预期参数:问题”错误

非常感谢

【问题讨论】:

    标签: flask cypher py2neo


    【解决方案1】:

    你快到了。

    对于 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 引擎中。为此,所有内容都需要明确提供。

    【讨论】:

      猜你喜欢
      • 2013-01-10
      • 1970-01-01
      • 1970-01-01
      • 2018-09-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-09-23
      • 2020-06-17
      相关资源
      最近更新 更多