Rewrote tutorial to use the g based appcontext object
This commit is contained in:
parent
42cf782ee3
commit
05161d3584
7 changed files with 154 additions and 118 deletions
|
|
@ -11,22 +11,31 @@
|
|||
"""
|
||||
|
||||
from sqlite3 import dbapi2 as sqlite3
|
||||
from flask import Flask, request, session, redirect, url_for, abort, \
|
||||
render_template, flash, _app_ctx_stack
|
||||
from flask import Flask, request, session, g, redirect, url_for, abort, \
|
||||
render_template, flash
|
||||
|
||||
# configuration
|
||||
DATABASE = '/tmp/flaskr.db'
|
||||
DEBUG = True
|
||||
SECRET_KEY = 'development key'
|
||||
USERNAME = 'admin'
|
||||
PASSWORD = 'default'
|
||||
|
||||
# create our little application :)
|
||||
app = Flask(__name__)
|
||||
app.config.from_object(__name__)
|
||||
|
||||
# Load default config and override config from an environment variable
|
||||
app.config.update(dict(
|
||||
DATABASE='/tmp/flaskr.db',
|
||||
DEBUG=True,
|
||||
SECRET_KEY='development key',
|
||||
USERNAME='admin',
|
||||
PASSWORD='default'
|
||||
))
|
||||
app.config.from_envvar('FLASKR_SETTINGS', silent=True)
|
||||
|
||||
|
||||
def connect_db():
|
||||
"""Connects to the specific database."""
|
||||
rv = sqlite3.connect(app.config['DATABASE'])
|
||||
rv.row_factory = sqlite3.Row
|
||||
return rv
|
||||
|
||||
|
||||
def init_db():
|
||||
"""Creates the database tables."""
|
||||
with app.app_context():
|
||||
|
|
@ -40,21 +49,16 @@ def get_db():
|
|||
"""Opens a new database connection if there is none yet for the
|
||||
current application context.
|
||||
"""
|
||||
top = _app_ctx_stack.top
|
||||
if not hasattr(top, 'sqlite_db'):
|
||||
sqlite_db = sqlite3.connect(app.config['DATABASE'])
|
||||
sqlite_db.row_factory = sqlite3.Row
|
||||
top.sqlite_db = sqlite_db
|
||||
|
||||
return top.sqlite_db
|
||||
if not hasattr(g, 'sqlite_db'):
|
||||
g.sqlite_db = connect_db()
|
||||
return g.sqlite_db
|
||||
|
||||
|
||||
@app.teardown_appcontext
|
||||
def close_db_connection(exception):
|
||||
def close_db(error):
|
||||
"""Closes the database again at the end of the request."""
|
||||
top = _app_ctx_stack.top
|
||||
if hasattr(top, 'sqlite_db'):
|
||||
top.sqlite_db.close()
|
||||
if hasattr(g, 'sqlite_db'):
|
||||
g.sqlite_db.close()
|
||||
|
||||
|
||||
@app.route('/')
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue