How to pass arbitrary arguments to a flask blueprint?

Use Flask config system (app.config) to store all your config data, then from your Blueprint read your Application Context using current_app.

Store in app.config:

app.config[DATABASE_URI] = databaseURI

Read application context:

databaseURI = current_app.config[DATABASE_URI]

Sample code

main.py

from flask import Flask
from blueprint import myblueprint

app = Flask(__name__)
app.register_blueprint(myblueprint)
app.config[DATABASE_URI] = databaseURI

blueprint.py

from flask import current_app

myblueprint= Blueprint('myblueprint', __name__)
@myblueprint.route('/route', methods=['GET'])
def route():
  databaseURI = current_app.config[DATABASE_URI]
  database = OpenDatabaseConnection(databaseURI)

You could create the blueprint dynamically in a constructor function:

def construct_blueprint(database):

    myblueprint = Blueprint('myblueprint', __name__)

    @myblueprint.route('/route', methods=['GET'])
    def route():
        database = database

    return(myblueprint)