# Implementing Flask create_app function with SqlAlchemy

I have a simple Flask app that realises rest-api with SQLAlchemy. I have written this create_app function:

views.py

def create_app(config):
app.config.from_object(config)
url = config.DATABASE_URI
engine = create_engine(url)

DBSession = sessionmaker(bind=engine)
session = DBSession()
app.db_session = session
return app


and a typical view looks like:

views.py

@app.route('/restaurants', methods=['GET', 'POST'])
def all_restaurants_handler():
if request.method == 'GET':
# RETURN ALL RESTAURANTS IN DATABASE
restaurants = app.db_session.query(Restaurant).all()
return jsonify(restaurants=[i.serialize for i in restaurants])


So, when I write tests, I can pass to create_app function test configuration. Although this works, I have some doubts regarding design of this solution. First of all, I don't like that I need to use app.db_session in order to get the session. Second, I am not sure if it's a good decision to initialize db in the create_app function.