GraphQL With Python Flask. GraphQL, Graphene, Flask, and Mysql | by Manish Jain | Towards Data Science

Before we get started, let’s talk about our objective first.
We are trying to develop a starter-kit project that runs on Flask, that has the following functionalities:
GraphQL support
Database integration
For this tutorial, we will need:
- Python- Pip- Virtualenv- Docker
Flask is a micro framework for Python based on Werkzeug, Jinja 2 and good intentions. — Flask Documentation
Setting up a barebones Flask project is really simple. However, since there’s quite a bit of functionality that we want to be built in, the following steps will take slightly longer than usual.
Start by creating a virtual environment.
$ virtualenv venv$ source venv/bin/activate
Next, we can install the required packages. As to not confuse everyone, I’ll include only the required packages for each step respectively.
$ pip install flask flask_script$ mkdir -p app/__init__.py$ touch manage.py
We will first have to install the required dependencies
$ pip install flask-sqlalchemy pymysql
We can now start to set up our Flask app to connect with our MySQL service. For that, we will have to add a config.py file and also update our app/__init__.py file.
Using a config file, we are able to separate our environment variables, as well as store our constant variables as required.
With this, when we run the docker-compose up, the application will start running and it will be connected with the MySQL service.
GraphQL is a query language for APIs and runtime for fulfilling those queries with your existing data. GraphQL provides a complete and understandable description of the data in your API, gives clients the power to ask for exactly what they need, and nothing more, makes it easier to evolve APIs over time, and enables powerful developer tools.
$ pip install graphene Flask-GraphQL
Let’s do a breakdown of the packages that we just installed.
Flask-GraphQL is a wrapper layer that adds GraphQL support to the Flask application.
We’ll have to add a /graphql route for the client to access the APIs. To do that, we can simply update our app/__init__.py file.
In this case, we have imported GraphQLView from the Flask-GraphQL module and have used it to implement our /graphql route.
Next, we will be using the Graphene-Python package. Graphene is an open-source library that allows developers to build simple yet extendable APIs with GraphQL in Python.
If you have noticed from our latest app/__init__.py file, we are actually missing an app/schema.py file for our Flask application to work. A GraphQL schema is at the core of any GraphQL server implementation and describes the functionality available to the clients which connect to it.
In this case, we shall create a simple schema so that our application will be able to run without any error.
With this, try running your application. When you access http://localhost:5000/graphql, you should be able to see this page. If you are familiar with GraphQL, this page should be very familiar to you. It’s an interface that allows you to enter GraphQL queries.
I hope this article will give you a better understanding and overview of how you can build your Python application with GraphQL. This can also be done with the Django framework.
I have also added a Github repository for reference here. Here is another story for GraphQL Best Practices, you might be interested in.