【问题标题】:Neomodel cypher query missing positional argumentNeomodel 密码查询缺少位置参数
【发布时间】:2018-07-19 03:40:59
【问题描述】:

我正在尝试在我的 Django 视图中使用 .cypher 查询我的 Employee 模型。我在其他地方使用过这个查询,所以我知道这部分有效。

query_string = "MATCH (n)-[r:REPORTS_TO|BRANCH_OF|OVERSEEN_BY]->() RETURN n, r"

query_results = Employee.cypher(
    self = Employee, 
    query = query_string, 
    params = None)

***   ERROR _pre_action_check() 
      missing 1 required positional argument: 'action'

此错误指向此处的第 204 行:

https://github.com/neo4j-contrib/neomodel/blob/master/neomodel/core.py


我试过了:

  • action=cypher
  • action='cypher'
  • self=neomodel
  • self=django-neomodel
  • self=cypher

另外,如果我尝试通过在模型中定义密码调用然后在视图中调用它来遵循文档......我仍然会遇到同样的错误

https://neomodel.readthedocs.io/en/latest/cypher.html


更新: 完整的跟踪在这里https://imgur.com/a/o3rQr

【问题讨论】:

  • 它是一个位置参数。
  • 嗯。那么与results, columns = self.cypher 有什么关系?认为在文档中看起来很奇怪
  • 我们能看到整个 Traceback 吗?
  • @JacobIRR 已更新跟踪!
  • 好的,所以您的查询字符串被读取为 self 参数,它仍在等待查询字符串。您需要创建一个 Employee 实例来调用 .cypher。我不知道如何进一步提供帮助,但听起来@JacobIRR 知道如何从这里获取它。 (除非你已经知道如何创建实例对象)

标签: python cypher neomodel


【解决方案1】:

您使用三个位置参数调用此方法的事实似乎是错误的。

方法签名是:

def cypher(self, query, params=None):

-self 已由您的 Employee. 前缀提供。 (错误,见下文)

-query 应该作为位置query_string 参数传入

-params=None只是传递默认值,没用。

你试过Employee.cypher(query_string)吗?

根据 Tezra 所说,您需要一个 Employee 实例:

employee = Employee()

然后拨打employee.cypher(query_string)

【讨论】:

  • 是的,这是我尝试的第一件事。我可以在午餐后回复它产生的错误
  • 听起来不错 - 我希望看到该错误,因为它至少来自按预期使用该方法。
  • cypher() missing 1 required positional argument: 'query' 响应 Employee.cypher(query_string)
  • 您能分享该示例的完整跟踪吗?我得到cypher() missing 1 required positional argument: 'query' 的唯一方法是调用cypher,根本不带任何参数。
  • @JacobIRR 看起来 Employee 是类,而不是实例,所以查询被读取为 self 参数......我不熟悉 python 驱动程序所以我不知道如何创建一个 self 的实例(我猜这就是 asnwer)。
猜你喜欢
  • 1970-01-01
  • 2021-12-05
  • 2021-12-25
  • 2020-05-21
  • 1970-01-01
  • 2019-09-09
  • 2020-11-25
  • 1970-01-01
  • 2018-09-06
相关资源
最近更新 更多