A Mongoengine integration for Graphene.
For installing graphene-mongo, just run this command in your shell
pip install graphene-mongo
Here is a simple Mongoengine model as models.py
:
from mongoengine import Document from mongoengine.fields import StringField class User(Document): meta = {'collection': 'user'} first_name = StringField(required=True) last_name = StringField(required=True)
To create a GraphQL schema and sync executor; for it you simply have to write the following:
import graphene from graphene_mongo import MongoengineObjectType from .models import User as UserModel class User(MongoengineObjectType): class Meta: model = UserModel class Query(graphene.ObjectType): users = graphene.List(User) def resolve_users(self, info): return list(UserModel.objects.all()) schema = graphene.Schema(query=Query)
Then you can simply query the schema:
query = ''' query { users { firstName, lastName } } ''' result = await schema.execute(query)
To create a GraphQL schema and async executor; for it you simply have to write the following:
import graphene from graphene_mongo import AsyncMongoengineObjectType from graphene_mongo.utils import sync_to_async from concurrent.futures import ThreadPoolExecutor from .models import User as UserModel class User(AsyncMongoengineObjectType): class Meta: model = UserModel class Query(graphene.ObjectType): users = graphene.List(User) async def resolve_users(self, info): return await sync_to_async(list, thread_sensitive=False, executor=ThreadPoolExecutor())(UserModel.objects.all()) schema = graphene.Schema(query=Query)
Then you can simply query the schema:
query = ''' query { users { firstName, lastName } } ''' result = await schema.execute_async(query)
To learn more check out the following examples:
After cloning this repo, ensure dependencies are installed by running:
pip install -r requirements.txt
After developing, the full test suite can be evaluated by running:
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4