In recent years, NoSQL databases have become increasingly popular due to their flexibility and scalability compared to traditional relational databases. One of the most popular NoSQL databases is MongoDB, which is a document-based database that stores data in flexible, JSON-like documents. On the other hand, FastAPI is a modern, fast (high-performance) web framework for building APIs with Python 3.7+.
Combining FastAPI with MongoDB can unlock the power of NoSQL databases and provide a scalable and high-performance backend for your applications. In this tutorial, we will walk you through the process of setting up a FastAPI application with MongoDB as the backend database.
Step 1: Setting up your environment
Before you start working with FastAPI and MongoDB, make sure that you have Python 3.7+ installed on your system. You can download the latest version of Python from the official website and follow the installation instructions.
Next, you will need to install the necessary Python packages. You can install FastAPI using pip:
pip install fastapi[all]
You will also need to install the official MongoDB Python driver, pymongo:
pip install pymongo
Step 2: Setting up your MongoDB database
If you don’t already have MongoDB installed on your system, you can download and install it from the official website. Once MongoDB is installed and running, you can use the MongoDB shell or a GUI tool like MongoDB Compass to create a new database and collections.
For this tutorial, we will create a simple database named "fastapi_mongodb" with a collection named "users". You can do this using the MongoDB shell:
use fastapi_mongodb
db.createCollection('users')
Step 3: Creating a FastAPI application
Create a new Python file for your FastAPI application. In this file, you will define routes that interact with your MongoDB database. Here’s a simple example of a FastAPI application with CRUD operations for a "users" collection in MongoDB:
from fastapi import FastAPI
from pymongo import MongoClient
app = FastAPI()
client = MongoClient('mongodb://localhost:27017/')
db = client['fastapi_mongodb']
collection = db['users']
@app.get("/users/")
def get_users():
users = []
for user in collection.find():
users.append(user)
return users
@app.post("/users/")
def create_user():
new_user = {"username": "john_doe", "email": "john_doe@example.com"}
result = collection.insert_one(new_user)
return {"message": "User created successfully", "user_id": str(result.inserted_id)}
@app.put("/users/{user_id}")
def update_user(user_id: str):
# Update user logic here
return {"message": "User updated successfully"}
@app.delete("/users/{user_id}")
def delete_user(user_id: str):
# Delete user logic here
return {"message": "User deleted successfully"}
In this example, we connect to the MongoDB database and define routes for CRUD operations on the "users" collection. You can test these routes using a tool like Postman or cURL.
Step 4: Running your FastAPI application
To run your FastAPI application, use the uvicorn server:
uvicorn app_name:app --reload
Replace "app_name" with the name of your Python file. The –reload flag will enable hot reloading, allowing you to make changes to your code without restarting the server.
Once your FastAPI application is running, you can access it by navigating to http://localhost:8000 in your web browser. You can now perform CRUD operations on your MongoDB database using the defined routes.
In conclusion, combining FastAPI with MongoDB can provide a powerful and scalable backend for your applications. By following this tutorial, you can unlock the power of NoSQL databases and build high-performance APIs with Python. Remember to handle error cases and implement proper authentication and validation logic in your FastAPI application for a secure and robust backend.
Python 3.12 is out now in pre-release! Like & comment what you want to learn next 🙂
great video, was much of help, thanks
that was one of the best examples out there
Thanks a lot Eric! 👏
Beautiful. Just what I wanted to know. Thank you.
Thank you for the nice explanation, really appreciate your hard work in creating helpful content. and for the next videos, can you upload some videos about React js.
Thank you so much
can you do relationships on this Mongo DB with fastAPI that I can relate to your FastAPI Udemy course? i want to rebuild the project on that course but using Nosql
Thank you so much, that was a wonderful follow through video of monogdb and fastapi that i have ever come accress. Just one issue, I encountered this error [pymongo.errors.ConfigurationError: The DNS response does not contain an answer to the question: _mongodb._tcp.<server>. IN SRV]. the python driver link is also different [python -m pip install "pymongo[srv]"==3.11]. I did install python 3.12 and tried but still facing the same error. tried searching the web but couldn't find solution to that. my initial python version was 3.11.7 Could you help me on that? Thank you
Thank you so much, you were very clear and the code works well! I was struggling a bit with updating the post, put and delete functions on the browser with VS code.. in the end I just had to "save" files for them to take effect. Whoever is wondering if this video is worth going through, I would say 100% it is – I am an absolute beginner and managed to follow it through.
What if I would like to delete by "description"?
Thank you for your explanation video! I had some problems to write code, but with your explanation, I'm sure that I can solve them! 😀
Awesome Thank you!
Thank you very much, everything is great, but I faced a problem when linking MongoDB with Fastapi, which is an SSL certificate. I searched for two days and the solution is very simple 😅😅. """""client = MongoClient(uri, ssl_cert_reqs=ssl.CERT_NONE) """"
11:03 is there a piano in the background
Thank you so much for the video, Crisp and clear example <3
Excellent! You explain everything so clearly, even for a person who doesn't speak your language.
Impressive presentaion! What I want to learn is relationship inside mongo db.
can you provide the github repo
Thanks Eric!