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-pymongobefore use causes import errors. - Incorrect
MONGO_URIformat leads to connection failures. - Forgetting to run MongoDB server locally or remotely will cause connection errors.
- Not handling
_idfield 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-pymongowith pip. - Set
app.config['MONGO_URI']correctly. - Initialize
PyMongowith your app. - Use
mongo.db.collectionto access collections. - Remove
_idor 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.