Flask error: RuntimeError: Working outside of application context [duplicate]

Solution
# Your model definitions or imports here.

with app.app_context():
    db.create_all()

# ...
from datetime import timedelta
from flask import (
    Flask, 
    flash, 
    redirect, 
    render_template, 
    request,
    session,
    url_for 
)
from flask_sqlalchemy import SQLAlchemy

app = Flask(__name__)
app.secret_key = 'hello'
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///users.sqlite3'
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False
app.permanent_session_lifetime = timedelta(days=1)

db = SQLAlchemy(app)


# Definition of your database models including the columns for the tables, 
# which are named without an explicit definition based on the name of the 
# respective model.

class User(db.Model):
    id = db.Column('id', db.Integer, primary_key=True)
    name = db.Column(db.String(100))
    email = db.Column(db.String(100))

    def __init__(self, name, email):
        self.name = name
        self.email = email


# Creation of the database tables within the application context.
with app.app_context():
    db.create_all()


@app.route('/')
def home():
    return render_template('index.html')

@app.route('/login', methods=['POST', 'GET'])
def login():
    if request.method == 'POST':
        session.permanent = True
        user = request.form['nm']
        session['user'] = user
        flash('Login successful.', 'info')
        return redirect(url_for('user'))
    else:
        if 'user' in session:
            flash('Already logged in.')
            return redirect(url_for('user'))
        return render_template('login.html')

@app.route('/user', methods=['POST', 'GET'])
def user():
    email = None
    if 'user' in session:
        user = session['user']
        if request.method == 'POST':
            email = request.form['email']
            session['email'] = email
            flash('Email was saved!')
        else:
            if 'email' in session:
                email = session['email']
        return render_template('user.html', email=email)
    else:
        flash('Not logged in.')
        return redirect(url_for('login'))

@app.route('/logout')
def logout():
    flash('You have been logged out', 'info')
    session.pop('user', None)
    session.pop('email', None)
    return redirect(url_for('login'))


if __name__ == '__main__':
    app.run(debug=True)
flask --app main shell
# Assuming your application file is in the same directory and
# named "main.py".

from main import db
db.create_all()