Flask configuration

Flask-mongoengine does not provide any configuration defaults. User is responsible for setting up correct database settings, to exclude any possible misconfiguration and data corruption.

There are several options to set connection. Please note, that all except recommended are deprecated and may be removed in future versions, to lower code base complexity and bugs. If you use any deprecated connection settings approach, you should update your application configuration.

By default, flask-mongoengine open the connection when extension is instantiated, but you can configure it to open connection only on first database access by setting the 'connect' dictionary parameter or its MONGODB_CONNECT flat equivalent to False.

Note

Due lack of developers we are unable to answer/solve not recommended connection methods errors. Please switch to recommended method before posting any issue. Thank you.

Deprecated: Passing database configuration to MongoEngine class

Deprecated since version 2.0.0.

You can pass database dictionary of dictionaries directly to MongoEngine class initialization. Lists of settings not supported.

import flask
from flask_mongoengine import MongoEngine

db_config = {
    "db": "project1",
    "host": "localhost",
    "port": 27017,
    "alias": "default",
}
db = MongoEngine(config=db_config)
app = flask.Flask("example_app")

db.init_app(app)

Deprecated: Passing database configuration to MongoEngine.init_app method

Deprecated since version 2.0.0.

You can pass database dictionary of dictionaries directly to flask_mongoengine.MongoEngine.init_app() class initialization. Lists of settings not supported.

import flask
from flask_mongoengine import MongoEngine

db_config = {
    "db": "project1",
    "host": "localhost",
    "port": 27017,
    "alias": "default",
}
db = MongoEngine()
app = flask.Flask("example_app")

db.init_app(app, config=db_config)

Deprecated: MONGODB_ inside MONGODB_SETTINGS dictionary

Deprecated since version 2.0.0.

Flask-mongoengine will cut off MONGODB_ prefix from any parameters, specified inside MONGODB_SETTINGS dictionary. This is historical behaviour, but may be removed in the future. Providing such settings may raise config errors, when parent packets implement case-sensitive keyword arguments checks. Check issue #451 for example historical problem.

Currently, we are handling all possible case-sensitive keyword settings and related users errors (based on pymongo 4.1.1), but amount of such settings may be increased in future pymongo versions.

Usage of recommended settings approach completely remove this possible problem.

Deprecated: URI style settings

Deprecated since version 2.0.0.

URI style connections supported as supply the uri as the host in the MONGODB_SETTINGS dictionary in app.config.

Warning

It is not recommended to use URI style settings, as URI style settings parsed and manupulated in all parent functions/methods. This may lead to unexpected behaviour when parent packages versions changed.

Warning

Database name from uri has priority over name. (MongoEngine behaviour).

If uri presents and doesn’t contain database name db setting entirely ignore and db name set to test:

import flask
from flask_mongoengine import MongoEngine

db = MongoEngine()
app = flask.Flask("example_app")
app.config['MONGODB_SETTINGS'] = {
    'db': 'project1',
    'host': 'mongodb://localhost/database_name'
}
db.init_app(app)

Deprecated: Flat MONGODB_ style configuration settings

Deprecated since version 2.0.0.

Connection settings may also be provided individually by prefixing the setting with MONGODB_ in the app.config:

import flask
from flask_mongoengine import MongoEngine

db = MongoEngine()
app = flask.Flask("example_app")
app.config['MONGODB_DB'] = 'project1'
app.config['MONGODB_HOST'] = '192.168.1.35'
app.config['MONGODB_PORT'] = 12345
app.config['MONGODB_USERNAME'] = 'webapp'
app.config['MONGODB_PASSWORD'] = 'pwd123'
db.init_app(app)

This method does not support multi-database installations.

By default, flask-mongoengine open the connection when extension is instantiated, but you can configure it to open connection only on first database access by setting the MONGODB_SETTINGS['connect'] parameter or its MONGODB_CONNECT flat equivalent to False.