For executing a query against a schema, you can directly call the execute method on it.
from graphene import Schema
schema = Schema(...)
result = schema.execute('{ name }')result represents the result of execution. result.data is the result of executing the query, result.errors is None if no errors occurred, and is a non-empty list if an error occurred.
You can pass context to a query via context.
from graphene import ObjectType, String, Schema
class Query(ObjectType):
name = String()
def resolve_name(root, info):
return info.context.get('name')
schema = Schema(Query)
result = schema.execute('{ name }', context={'name': 'Syrus'})
assert result.data['name'] == 'Syrus'You can pass variables to a query via variables.
from graphene import ObjectType, Field, ID, Schema
class Query(ObjectType):
user = Field(User, id=ID(required=True))
def resolve_user(root, info, id):
return get_user_by_id(id)
schema = Schema(Query)
result = schema.execute(
'''
query getUser($id: ID) {
user(id: $id) {
id
firstName
lastName
}
}
''',
variables={'id': 12},
)Value used for :ref:`ResolverParamParent` in root queries and mutations can be overridden using root parameter.
from graphene import ObjectType, Field, Schema, String, ID
class User(ObjectType):
id = ID()
name = String()
first_name = String()
last_name = String()
class Query(ObjectType):
user = Field(User)
def resolve_user(root, info):
return User(id=root.id, first_name=root.name)
schema = Schema(Query)
user_root = User(id=12, name='bob')
result = schema.execute(
'''
query getUser {
user {
id
firstName
lastName
}
}
''',
root=user_root
)
assert result.data['user']['id'] == str(user_root.id)If there are multiple operations defined in a query string, operation_name should be used to indicate which should be executed.
from graphene import ObjectType, Field, Schema
class Query(ObjectType):
me = Field(User)
def resolve_user(root, info):
return get_user_by_id(12)
schema = Schema(Query)
query_string = '''
query getUserWithFirstName {
user {
id
firstName
lastName
}
}
query getUserWithFullName {
user {
id
fullName
}
}
'''
result = schema.execute(
query_string,
operation_name='getUserWithFullName'
)
assert result.data['user']['fullName']