修改或更改py2neo

时间:2016-01-12 11:24:29

标签: python flask neo4j cypher py2neo

有没有办法在使用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,我似乎无法找到答案。如果修改关系是错误的方法,你能提供更好的关系吗?

2 个答案:

答案 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

propertieshttp://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()