当保存我的对象时,我得到这个错误,我不知道为什么,我做错了什么?据我所知,我正在根据文档使用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()
先谢谢你了。
1条答案
按热度按时间s4n0splo1#
正如@Ferenc Pal所描述的,重命名属性解决了这个问题。