0

I am using Python requests library to execute GraphQL mutation. I need to pass requests library a query parameter which should contain a string which should be constructed from the Python list of Python dictionaries.

Python list of dictionaries looks like:

my_list_of_dicts = [{"custom_module_id": "23", "answer": "some text 2", "user_id": "111"}, 
                            {"custom_module_id": "24", "answer": "a", "user_id": "111"}]

Now I need to convert this list of dictionaries in a string so it should look like this:

my_list_of_dicts = [{custom_module_id: "23", answer: "some text 2", user_id: "111"}, 
                            {custom_module_id: "24", answer: "a", user_id: "111"}]

Basically I need to get the string that looks like a Python list of dictionaries except that keys of the dictionaries does not have quotations around dictionary key names. I did this and it works:

my_query_string = json.dumps(my_list_of_dicts).replace("\"custom_module_id\"", "custom_module_id")
my_query_string = my_query_string.replace("\"answer\"", "answer")
my_query_string = my_query_string.replace("\"user_id\"", "user_id")

But I was wondering maybe there is better way to achieve this? By "better" I mean some function call that will prepare json/dictionary format for ready to be used GraphQL string.

1 Answer 1

1

I think this may help you find your final answer. Follow this article

gq = """
mutation ReorderProducts($id: ID!, $moves: [MoveInput!]!) {
    collectionReorderProducts(id: $id, moves: $moves) {
        job {
            id
            }
            userErrors {
                field
                message
            }
        }
    }
"""
resp = self.sy_graphql_client.execute(
    query=gq,
    variables={
        "id": before_collection_meta.coll_meta.id,
        "moves": list(map(lambda mtc:
            {
                "id": mtc.id, "newPosition": mtc.new_position
            }, move_to_commands))
    }
)

reorder_job_id = resp["data"]["collectionReorderProducts"]["job"]["id"]
self.sy_graphql_client.wait_for_job(reorder_job_id)
Sign up to request clarification or add additional context in comments.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.