如何在 python 函数中编写 graphQL 突变?

How do I write a graphQL mutation in a python function?

我想创建一个简单的 graphQL 突变的 python 函数。我有一个 graphQL 模式,并且有一个通过提供对象 ID 来删除对象的突变。 GraphQL 文档显示:

delete(
id: ID!
): Boolean!

要使用全局 ID 删除对象,我尝试创建一个 python 函数,但我收到 graphQL 的语法错误,我无法弄清楚。

#function to delete FIB
def deleteObj(self,id): # returns FIB deletion boolean
    
        objDel = self.graphQLClient.fetch("""
            mutation delete($id: [ID!]!) {
                delete(id: $id,) {
                    id
                }
            }
        """, {
            'id': id ,
            
        })
        info('***Object deletion result %s\n' % objDel)

我能理解我犯了一些愚蠢的错误,但解释会在以后帮助我。

我得到的错误是:

fib deletion result {'data': None, 'errors': [{'message': 'Syntax Error GraphQL request (3:34) Unexpected empty IN {}\n\n2:
mutation delete($id: [ID!]!) {\n3: delete(id: $id,) {\n ^\n4: \n', 'locations': [{'line': 3, 'column': 34}]}]}

我可以像这样使用突变插入对象:

def insertFibEntry(self, prefix, name): # returns FIB entry ID
        
        fib = self.graphQLClient.fetch("""
            mutation insertFibEntry($name: Name!, $nexthops: [ID!]!) {
                insertFibEntry(name: $name, nexthops: $nexthops) {
                    id
                }
            }
        """, {
            'name': "/"+prefix ,
            'nexthops': [self.faces[name]['data']['createFace']['id']]
            
        })
        info('***fib result %s\n' % fib)
        info('***prefix is %s'% "'/"+prefix+"'"+ '\n')

以上问题的解答如下-

    #function to delete obj
def deleteObj(self,id): # returns obj deletion boolean
        
        objDel = self.graphQLClient.fetch("""
            mutation delete($id:ID!) {
                delete(id: $id)
            }
        """, {
            'id': id 
            
        })
        info('***fib deletion result %s\n' % objDel)