如何将 python class 映射到 gremlin 顶点?
How to map a python class to a gremlin vertex?
我曾希望将 class 映射到 gremlin python 中的顶点会像以下一样简单:
def toVertex(self,g):
t=g.addV(type(self))
for name,value in vars(self).items():
if debug:
print("%s=%s" % (name,value))
t=t.property(name,str(value))
t.iterate()
为了避免任何类型强制问题,我认为 str(value) 会确保所有属性都被视为字符串。
不幸的是,我收到错误消息:
File "/opt/local/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/gremlin_python/structure/io/graphsonV3d0.py", line 341, in dictify
return writer.toDict(typ())
TypeError: __init__() missing 1 required positional argument: 'record'
我在这里遗漏了什么 - 如何解决这个问题?
问题是类型不是 return 字符串而是 class 并试图调用 class 的构造函数,它需要一条记录:
即使不对值使用 str(),以下代码也能正常工作:
def toVertex(self,g):
label=type(self).__name__;
t=g.addV(label)
for name,value in vars(self).items():
if debug:
print("%s=%s" % (name,value))
t=t.property(name,value)
t.iterate()
我曾希望将 class 映射到 gremlin python 中的顶点会像以下一样简单:
def toVertex(self,g):
t=g.addV(type(self))
for name,value in vars(self).items():
if debug:
print("%s=%s" % (name,value))
t=t.property(name,str(value))
t.iterate()
为了避免任何类型强制问题,我认为 str(value) 会确保所有属性都被视为字符串。
不幸的是,我收到错误消息:
File "/opt/local/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/gremlin_python/structure/io/graphsonV3d0.py", line 341, in dictify
return writer.toDict(typ())
TypeError: __init__() missing 1 required positional argument: 'record'
我在这里遗漏了什么 - 如何解决这个问题?
问题是类型不是 return 字符串而是 class 并试图调用 class 的构造函数,它需要一条记录:
即使不对值使用 str(),以下代码也能正常工作:
def toVertex(self,g):
label=type(self).__name__;
t=g.addV(label)
for name,value in vars(self).items():
if debug:
print("%s=%s" % (name,value))
t=t.property(name,value)
t.iterate()