【问题标题】:neomodel unable to match recordneomodel 无法匹配记录
【发布时间】:2020-11-18 13:38:02
【问题描述】:

我在 python 3.8 上使用 neomodel==4.0.1

我使用整数属性code 有结构化节点名称存储,当我使用 get 方法搜索存储时,它无法找到任何匹配项

StoreNodeDoesNotExist         
----> 1 StoreNode.nodes.get(code='23416')

app/.env/lib/python3.8/site-packages/neomodel/match.py in get(self, lazy, **kwargs)
    605             raise MultipleNodesReturned(repr(kwargs))
    606         elif not result:
--> 607             raise self.source_class.DoesNotExist(repr(kwargs))
    608         else:
    609             return result[0]

StoreNodeDoesNotExist: (StoreNodeDoesNotExist(...), "{'code': '23416'}")

StoreNodeDoesNotExist
----> 1 StoreNode.nodes.get(code=23416)

app/.env/lib/python3.8/site-packages/neomodel/match.py in get(self, lazy, **kwargs)
    605             raise MultipleNodesReturned(repr(kwargs))
    606         elif not result:
--> 607             raise self.source_class.DoesNotExist(repr(kwargs))
    608         else:
    609             return result[0]

StoreNodeDoesNotExist: (StoreNodeDoesNotExist(...), "{'code': 23416}")

另一方面,如果我运行 cypher 它匹配

In [9]: results, columns = db.cypher_query("MATCH (n:StoreNode{code:'23416'}) return n;",)

In [10]: [StoreNode.inflate(row[0]) for row in results]
Out[10]: [<StoreNode: {'created_on': datetime.datetime(2020, 11, 17, 7, 31, 49, 262277, tzinfo=<UTC>), 'modified_on': None, 'delivery_status': None, 'name': 'Ll Shop (23416) ', 'code': 23416, 'id': 145798}>]

有人可以解释原因以及如何更正我以前的新模型查询吗?

【问题讨论】:

    标签: python neo4j neomodel


    【解决方案1】:

    您必须将code 作为整数而不是字符串传递:

    StoreNode.nodes.get(code=23416)
    

    【讨论】:

    • 我试过你的建议,但对我没有用。
    【解决方案2】:

    将属性code 设置为整数解决了这个问题。

    它出现是因为我将 code 作为整数属性,而在批量插入期间我将其值设置为字符串。 我需要对 csv 上传代码添加架构检查。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-12-16
      • 1970-01-01
      • 2016-10-29
      • 1970-01-01
      相关资源
      最近更新 更多