flask/docs/tutorial/dbcon.rst

38 lines
1.4 KiB
ReStructuredText
Raw Normal View History

.. _tutorial-dbcon:
Step 4: Request Database Connections
------------------------------------
2010-12-30 09:00:56 -06:00
Now we know how to open database connections and use them for scripts,
but how can we elegantly do that for requests? We will need the database
2010-12-30 09:00:56 -06:00
connection in all our functions, so it makes sense to initialize them
before each request and shut them down afterwards.
Flask allows us to do that with the :meth:`~flask.Flask.before_request` and
:meth:`~flask.Flask.after_request` decorators::
@app.before_request
def before_request():
g.db = connect_db()
@app.after_request
def after_request(response):
g.db.close()
return response
Functions marked with :meth:`~flask.Flask.before_request` are called before
a request and passed no arguments, functions marked with
:meth:`~flask.Flask.after_request` are called after a request and
passed the response that will be sent to the client. They have to return
that response object or a different one. In this case we just return it
unchanged.
2010-12-30 09:00:56 -06:00
We store our current database connection in the special :data:`~flask.g`
object that Flask provides for us. This object stores information for one
request only and is available from within each function. Never store such
2010-12-30 09:00:56 -06:00
things in other objects because this would not work with threaded
environments. That special :data:`~flask.g` object does some magic behind
the scenes to ensure it does the right thing.
Continue to :ref:`tutorial-views`.