有没有办法在使用py2neo或cypher设置关系属性后更改它?我正在创建一个库存跟踪器,一旦项目为“CHECKED_OUT”,关系中名为“status”的属性将设置为“True”。理想情况下,一旦退回或签入项目,我想将“status”属性更改为“False”。通过这种方式,我可以跟踪项目并防止它被检出两次。
以下是我为结帐交易创建关系的代码:
def check_out(self, barcode):
emp = self
item = barcode
id = str(uuid.uuid4())
timestamp = int(datetime.now().strftime("%s"))
date = datetime.now().strftime("%F")
status=True
rel = Relationship(emp, "CHECKED_OUT", item, id=id, timestamp=timestamp, date=date, status=status)
if not(graph.create_unique(rel)):
return True
else:
return False
我已经阅读了py2neo API,我似乎无法找到答案。如果修改关系是错误的方法,你能提供更好的关系吗?
答案 0 :(得分:1)
沿着这条线的东西应该有效:
def check_in(self, barcode):
item = barcode
# get the relationship
for rel in graph.match(start_node=self, rel_type="CHECKED_OUT", end_node=item):
# set property
rel.properties["status"] = False
rel.push()
请参阅match()
:http://py2neo.org/2.0/essentials.html#py2neo.Graph.match
和properties
:http://py2neo.org/2.0/essentials.html#py2neo.Relationship.properties
答案 1 :(得分:0)
非常感谢你。然而,它可以更新项目与人之间的所有关系。我稍微修改了你的反应,以确保我更新正确的关系。再次谢谢你。我已经在下面添加了更新版本。
def check_in(self, barcode, id):
item = barcode
#get the relationship
for rel in graph.match(start_node=self, rel_type="CHECKED_OUT", end_node=item):
if rel["id"] == id:
#set property
rel.properties["status"] = False
rel.push()