0
0
FlaskHow-ToBeginner · 4 min read

How to Connect Flask to MongoDB: Simple Guide

To connect Flask to MongoDB, use the Flask-PyMongo extension by installing it and initializing it with your MongoDB URI in your Flask app. This allows your Flask app to interact with MongoDB easily through a simple API.
📐

Syntax

First, install Flask-PyMongo with pip install flask-pymongo. Then, import and initialize PyMongo in your Flask app by passing the MongoDB connection URI. Use mongo.db to access the database.

  • app.config['MONGO_URI']: Your MongoDB connection string.
  • PyMongo(app): Initializes the connection.
  • mongo.db.collection: Access collections to perform database operations.
python
from flask import Flask
from flask_pymongo import PyMongo

app = Flask(__name__)
app.config['MONGO_URI'] = 'mongodb://localhost:27017/mydatabase'
mongo = PyMongo(app)

# Access collection
users = mongo.db.users

# Example: Insert a document
users.insert_one({'name': 'Alice', 'age': 30})
💻

Example

This example shows a simple Flask app connecting to MongoDB, inserting a user, and fetching users to display as JSON.

python
from flask import Flask, jsonify
from flask_pymongo import PyMongo

app = Flask(__name__)
app.config['MONGO_URI'] = 'mongodb://localhost:27017/mydatabase'
mongo = PyMongo(app)

@app.route('/add_user')
def add_user():
    user = {'name': 'Bob', 'age': 25}
    mongo.db.users.insert_one(user)
    return 'User added!'

@app.route('/users')
def get_users():
    users = list(mongo.db.users.find({}, {'_id': 0}))
    return jsonify(users)

if __name__ == '__main__':
    app.run(debug=True)
Output
Running the app and visiting /add_user adds a user and returns 'User added!'. Visiting /users returns JSON list of users like [{"name": "Bob", "age": 25}].
⚠️

Common Pitfalls

  • Not installing flask-pymongo before use causes import errors.
  • Incorrect MONGO_URI format leads to connection failures.
  • Forgetting to run MongoDB server locally or remotely will cause connection errors.
  • Not handling _id field when returning JSON can cause serialization errors.
python
from flask import Flask, jsonify
from flask_pymongo import PyMongo

app = Flask(__name__)
# Wrong URI format example
app.config['MONGO_URI'] = 'mongodb://wrong_uri'
mongo = PyMongo(app)

@app.route('/users')
def get_users():
    # This will fail if MongoDB is not running or URI is wrong
    users = list(mongo.db.users.find())
    # This will cause error if _id is not removed or converted
    return jsonify(users)

# Correct way to handle _id
@app.route('/users_fixed')
def get_users_fixed():
    users = list(mongo.db.users.find({}, {'_id': 0}))
    return jsonify(users)
📊

Quick Reference

Remember these key points when connecting Flask to MongoDB:

  • Install flask-pymongo with pip.
  • Set app.config['MONGO_URI'] correctly.
  • Initialize PyMongo with your app.
  • Use mongo.db.collection to access collections.
  • Remove _id or convert it before returning JSON.

Key Takeaways

Use Flask-PyMongo to easily connect Flask with MongoDB using a URI.
Always set the correct MongoDB URI in app.config['MONGO_URI'].
Access collections via mongo.db.collection_name for database operations.
Remove or convert MongoDB _id fields before returning JSON responses.
Ensure MongoDB server is running and accessible to avoid connection errors.