I'm trying to do this (see title), but it's a bit complicated since the string I'm trying to build has to have the following properties:
Using a normal ''''''
multiline string makes injecting variables difficult. Using multiple f-strings makes injecting variables easy, but every curly brace, of which there are a lot, has to be doubled. And an f
has to be prepended to each line. On the other hand, if I try using format
, it also gets confused by all the curly braces.
Is there a better way that I haven't considered yet?
You can use the """ multiline string method. For injecting variables, make sure to use the $ sign while defining the string and use the variables object in the JSON parameter of the requests.post method.
Here is an example. ContactInput
is one of the types I defined in my GraphQL schema.
query = """
mutation ($input:[ContactInput!]!) {
AddContacts(contacts: $input) {
user_id
}
}
"""
variables = {'input': my_arrofcontacts}
r = requests.post(url, json={'query': query , 'variables': variables})