我正在尝试使用python客户端在OrientDB的顶点中插入一条记录。代码如下
print(recommendationCluster['recommendation'])
for recommendation in recommendationCluster['recommendation']:
item = menuitems.loadMenuItemWithId(str(recommendation),orientclient)
items.append(item._rid)
print("Creating cluster of ", items)
cluster['recommendeditems'] = items
dbData = {}
dbData['@RecommendationCluster']=cluster
print("Storing recommendation cluster ", dbData)
newCluster = orientclient.record_create(-1, dbData)
在控制台中,我看到消息
Storing recommendation cluster {'@RecommendationCluster': {'recommendeditems': ['#126:2', '#124:8']}}
这表明它已经找到了正确的项目的链接,并且正在执行插入。
但是record_create失败,并且在OrientDB服务器控制台中出现以下异常
com.orientechnologies.orient.core.exception.ODatabaseException: Impossible to serialize invalid link #-1:-1
如果有人能指出我在这里做错了,将不胜感激。
已解决问题。由于推荐项是LinkSet,因此要传递给数组的值应引用Link对象。
for recommendation in recommendationCluster['recommendation']: item = menuitems.loadMenuItemWithId(str(recommendation),orientclient) items.append(item._rid)
必须更改为
for recommendation in recommendationCluster['recommendation']: item = menuitems.loadMenuItemWithId(str(recommendation),orientclient) items.append(pyorient.OrientRecordLink(item._rid))
该更改解决了该问题,并且记录已成功插入