from graphene import Schema, ObjectType, String, Int, Field, List, Mutation class UserType(ObjectType): id = Int() name = String() age = Int() class CreateUser(Mutation): class Arguments: name = String() age = Int() user = Field(UserType) def mutate(self, info, name, age): user = {"id": len(Query.users) + 1, "name": name, "age": age} Query.users.append(user) return CreateUser(user=user) class Query(ObjectType): user = Field(UserType, user_id=Int()) users_by_min_age = List(UserType, min_age=Int()) users = [ {"id": 1, "name": "Tyrel Souza", "age": 35}, {"id": 2, "name": "Lauren Feldman", "age": 38}, {"id": 3, "name": "Astrid Feldman", "age": 0}, ] @staticmethod def resolve_user(root, info, user_id): matched_users = [user for user in Query.users if user["id"] == user_id] return matched_users[0] if matched_users else None @staticmethod def resolve_users_by_min_age(root, info, min_age): return [user for user in Query.users if user["age"] >= min_age] class Mut(ObjectType): create_user = CreateUser.Field() schema = Schema(query=Query, mutation=Mut) gql = """ query { user(userId: 4) { id name age } } """ gql2 = """ mutation{ createUser(name: "Jill", age: 61) { user { id name age } } } """ if __name__ == "__main__": res = schema.execute(gql) print(res) res = schema.execute(gql2) print(res)