neo4j Python新模型类型错误:不支持UniqueIdProperty类型的参数

vaqhlq81  于 12个月前  发布在  Python
关注(0)|答案(1)|浏览(100)

当保存我的对象时,我得到这个错误,我不知道为什么,我做错了什么?据我所知,我正在根据文档使用UniqueIdProperty。

Traceback (most recent call last):
  File "C:\Users\LARJAEG\AppData\Local\pypoetry\Cache\virtualenvs\open-precision-da2OwAle-py3.10\lib\site-packages\neo4j\data.py", line 337, in fix_parameters
    dehydrated, = dehydrator.dehydrate([parameters])
  File "C:\Users\LARJAEG\AppData\Local\pypoetry\Cache\virtualenvs\open-precision-da2OwAle-py3.10\lib\site-packages\neo4j\data.py", line 406, in dehydrate
    return tuple(map(dehydrate_, values))
  File "C:\Users\LARJAEG\AppData\Local\pypoetry\Cache\virtualenvs\open-precision-da2OwAle-py3.10\lib\site-packages\neo4j\data.py", line 402, in dehydrate_
    return {key: dehydrate_(value) for key, value in obj.items()}
  File "C:\Users\LARJAEG\AppData\Local\pypoetry\Cache\virtualenvs\open-precision-da2OwAle-py3.10\lib\site-packages\neo4j\data.py", line 402, in <dictcomp>
    return {key: dehydrate_(value) for key, value in obj.items()}
  File "C:\Users\LARJAEG\AppData\Local\pypoetry\Cache\virtualenvs\open-precision-da2OwAle-py3.10\lib\site-packages\neo4j\data.py", line 404, in dehydrate_
    raise TypeError(obj)
TypeError: <neomodel.properties.UniqueIdProperty object at 0x00000236B1E4C400>

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "C:\Users\LARJAEG\PycharmProjects\openPrecision\tests\manual_tests\test_model.py", line 16, in test_model
    course.save()
  File "C:\Users\LARJAEG\AppData\Local\pypoetry\Cache\virtualenvs\open-precision-da2OwAle-py3.10\lib\site-packages\neomodel\hooks.py", line 14, in hooked
    val = fn(self)
  File "C:\Users\LARJAEG\AppData\Local\pypoetry\Cache\virtualenvs\open-precision-da2OwAle-py3.10\lib\site-packages\neomodel\core.py", line 641, in save
    self.cypher(query, params)
  File "C:\Users\LARJAEG\AppData\Local\pypoetry\Cache\virtualenvs\open-precision-da2OwAle-py3.10\lib\site-packages\neomodel\core.py", line 488, in cypher
    return db.cypher_query(query, params)
  File "C:\Users\LARJAEG\AppData\Local\pypoetry\Cache\virtualenvs\open-precision-da2OwAle-py3.10\lib\site-packages\neomodel\util.py", line 35, in wrapper
    return func(self, *args, **kwargs)
  File "C:\Users\LARJAEG\AppData\Local\pypoetry\Cache\virtualenvs\open-precision-da2OwAle-py3.10\lib\site-packages\neomodel\util.py", line 309, in cypher_query
    response = session.run(query, params)
  File "C:\Users\LARJAEG\AppData\Local\pypoetry\Cache\virtualenvs\open-precision-da2OwAle-py3.10\lib\site-packages\neo4j\work\simple.py", line 217, in run
    self._autoResult._run(
  File "C:\Users\LARJAEG\AppData\Local\pypoetry\Cache\virtualenvs\open-precision-da2OwAle-py3.10\lib\site-packages\neo4j\work\result.py", line 77, in _run
    parameters = DataDehydrator.fix_parameters(
  File "C:\Users\LARJAEG\AppData\Local\pypoetry\Cache\virtualenvs\open-precision-da2OwAle-py3.10\lib\site-packages\neo4j\data.py", line 340, in fix_parameters
    raise TypeError("Parameters of type {} are not supported".format(type(value).__name__))
TypeError: Parameters of type UniqueIdProperty are not supported

这是我的模型类:

from __future__ import annotations

from dataclasses import dataclass
from typing import TYPE_CHECKING

from neomodel import StructuredNode, UniqueIdProperty, Property, RelationshipTo, cardinality, StringProperty

from open_precision.core.model import DataModelBase

if TYPE_CHECKING:
    from open_precision.core.model.path import Path

@dataclass(kw_only=True)
class Course(StructuredNode, DataModelBase):
    id: str = UniqueIdProperty()
    name: str = StringProperty(required=True)
    description: str = StringProperty(required=False)

    CONTAINS: RelationshipTo = RelationshipTo('open_precision.core.model.path.Path',
                                              'CONTAINS',
                                              cardinality=cardinality.ZeroOrMore)

这是引发错误的代码,它启动课程并保存它:

course = Course(name="test", description="bla")
course.save()

先谢谢你了。

s4n0splo

s4n0splo1#

正如@Ferenc Pal所描述的,重命名属性解决了这个问题。

相关问题