In [ ]:
import os
import sqlite3

In [ ]:
from flask import Flask, request, send_from_directory, \
    render_template, g, redirect, url_for

In [ ]:
app = Flask(__name__)
app.config.from_object(__name__)

In [ ]:
app.config.update(dict(
        DATABASE=os.path.join(app.root_path, 'flask_test.db')
    ))

In [ ]:
def init_db():
    db = sqlite3.connect(app.config['DATABASE'])
    with app.open_resource('schema.sql', mode='r') as f:
        db.cursor().executescript(f.read())
    db.commit()
    db.close()
# init_db()

In [ ]:
def connect_db():
    if not hasattr(g, 'db_con'):
        g.db_con = sqlite3.connect(app.config['DATABASE'])
        g.db_con.row_factory = sqlite3.Row
    return g.db_con

In [ ]:
@app.teardown_appcontext
def close_db(error):
    if hasattr(g, 'db_con'):
        g.db_con.close()

In [ ]:
@app.route('/html/<path:path>')
def send_html(path):
    return send_from_directory('html', path)

In [ ]:
@app.route('/save', methods=['POST'])
def save():
    db = connect_db()
    db.execute('insert into entries (username) values (?)', \
               [request.form['username']])
    db.commit()
    return redirect(url_for('list'))

In [ ]:
@app.route('/list')
def list():
    db = connect_db()
    cur = db.execute('select username from entries')
    usernames = cur.fetchall()
    return render_template('list.html', users=usernames)

In [ ]:
app.run()

In [ ]: