I ran into the same issue and was not sure why things have to work this way. However, according to the flask-sqlalchemy doc (see the last sentence of the section) it uses the Application Object
's instance_path
attribute, which defaults to instance
if not specified, but then I don't know how that becomes var/app-instance
in my flask app????
It is hard for someone new to flask/flask-sqlalchemy to know all the config options and how they interact with each other. Having a config system that adds an absolute path into sqlite:///filename.db
path is not obvious and unexpected.