Forums

First time trying to host a flask app with sqlite

I am brand new to all of this. I built a little app that scrapes recipes and stores them in a database. I had it running on my machine, but cannot seem to get it running on pythonanywhere.

Here is the error log when I run with debug on:

    2020-05-21 21:07:56,189: Error running WSGI application
2020-05-21 21:07:56,201: AttributeError: 'NoneType' object has no attribute 'drivername'
2020-05-21 21:07:56,201:   File "/home/eczeno/.virtualenvs/env/lib/python3.8/site-packages/flask/app.py", line 2464, in __call__
2020-05-21 21:07:56,202:     return self.wsgi_app(environ, start_response)
2020-05-21 21:07:56,202: 
2020-05-21 21:07:56,202:   File "/home/eczeno/.virtualenvs/env/lib/python3.8/site-packages/flask/app.py", line 2450, in wsgi_app
2020-05-21 21:07:56,202:     response = self.handle_exception(e)
2020-05-21 21:07:56,202: 
2020-05-21 21:07:56,202:   File "/home/eczeno/.virtualenvs/env/lib/python3.8/site-packages/flask/app.py", line 1867, in handle_exception
2020-05-21 21:07:56,202:     reraise(exc_type, exc_value, tb)
2020-05-21 21:07:56,202: 
2020-05-21 21:07:56,202:   File "/home/eczeno/.virtualenvs/env/lib/python3.8/site-packages/flask/_compat.py", line 39, in reraise
2020-05-21 21:07:56,202:     raise value
2020-05-21 21:07:56,202: 
2020-05-21 21:07:56,202:   File "/home/eczeno/.virtualenvs/env/lib/python3.8/site-packages/flask/app.py", line 2447, in wsgi_app
2020-05-21 21:07:56,203:     response = self.full_dispatch_request()
2020-05-21 21:07:56,203: 
2020-05-21 21:07:56,203:   File "/home/eczeno/.virtualenvs/env/lib/python3.8/site-packages/flask/app.py", line 1952, in full_dispatch_request
2020-05-21 21:07:56,203:     rv = self.handle_user_exception(e)
2020-05-21 21:07:56,203: 
2020-05-21 21:07:56,203:   File "/home/eczeno/.virtualenvs/env/lib/python3.8/site-packages/flask/app.py", line 1821, in handle_user_exception
2020-05-21 21:07:56,203:     reraise(exc_type, exc_value, tb)
2020-05-21 21:07:56,203: 
2020-05-21 21:07:56,203:   File "/home/eczeno/.virtualenvs/env/lib/python3.8/site-packages/flask/_compat.py", line 39, in reraise
2020-05-21 21:07:56,204:     raise value
2020-05-21 21:07:56,204: 
2020-05-21 21:07:56,204:   File "/home/eczeno/.virtualenvs/env/lib/python3.8/site-packages/flask/app.py", line 1950, in full_dispatch_request
2020-05-21 21:07:56,204:     rv = self.dispatch_request()
2020-05-21 21:07:56,204: 
2020-05-21 21:07:56,204:   File "/home/eczeno/.virtualenvs/env/lib/python3.8/site-packages/flask/app.py", line 1936, in dispatch_request
2020-05-21 21:07:56,204:     return self.view_functions[rule.endpoint](**req.view_args)
2020-05-21 21:07:56,205: 
2020-05-21 21:07:56,205:   File "/home/eczeno/Recipe-db/recipeapp/routes.py", line 12, in home
2020-05-21 21:07:56,205:     recipes = Recipe.query.all()
2020-05-21 21:07:56,205: 
2020-05-21 21:07:56,205:   File "/home/eczeno/.virtualenvs/env/lib/python3.8/site-packages/flask_sqlalchemy/__init__.py", line 519, in __get__
2020-05-21 21:07:56,205:     return type.query_class(mapper, session=self.sa.session())
2020-05-21 21:07:56,205: 
2020-05-21 21:07:56,205:   File "/home/eczeno/.virtualenvs/env/lib/python3.8/site-packages/sqlalchemy/orm/scoping.py", line 78, in __call__
2020-05-21 21:07:56,205:     return self.registry()
2020-05-21 21:07:56,205: 
2020-05-21 21:07:56,206:   File "/home/eczeno/.virtualenvs/env/lib/python3.8/site-packages/sqlalchemy/util/_collections.py", line 1032, in __call__
2020-05-21 21:07:56,206:     return self.registry.setdefault(key, self.createfunc())
2020-05-21 21:07:56,206: 
2020-05-21 21:07:56,206:   File "/home/eczeno/.virtualenvs/env/lib/python3.8/site-packages/sqlalchemy/orm/session.py", line 3254, in __call__
2020-05-21 21:07:56,206:     return self.class_(**local_kw)
2020-05-21 21:07:56,206: 
2020-05-21 21:07:56,206:   File "/home/eczeno/.virtualenvs/env/lib/python3.8/site-packages/flask_sqlalchemy/__init__.py", line 138, in __init__
2020-05-21 21:07:56,206:     bind = options.pop('bind', None) or db.engine
2020-05-21 21:07:56,206: 
2020-05-21 21:07:56,206:   File "/home/eczeno/.virtualenvs/env/lib/python3.8/site-packages/flask_sqlalchemy/__init__.py", line 937, in engine
2020-05-21 21:07:56,207:     return self.get_engine()
2020-05-21 21:07:56,207: 
2020-05-21 21:07:56,207:   File "/home/eczeno/.virtualenvs/env/lib/python3.8/site-packages/flask_sqlalchemy/__init__.py", line 956, in get_engine
2020-05-21 21:07:56,207:     return connector.get_engine()
2020-05-21 21:07:56,207: 
2020-05-21 21:07:56,207:   File "/home/eczeno/.virtualenvs/env/lib/python3.8/site-packages/flask_sqlalchemy/__init__.py", line 560, in get_engine
2020-05-21 21:07:56,207:     options = self.get_options(sa_url, echo)
2020-05-21 21:07:56,207: 
2020-05-21 21:07:56,207:   File "/home/eczeno/.virtualenvs/env/lib/python3.8/site-packages/flask_sqlalchemy/__init__.py", line 575, in get_options
2020-05-21 21:07:56,207:     self._sa.apply_driver_hacks(self._app, sa_url, options)
2020-05-21 21:07:56,207: 
2020-05-21 21:07:56,208:   File "/home/eczeno/.virtualenvs/env/lib/python3.8/site-packages/flask_sqlalchemy/__init__.py", line 877, in apply_driver_hacks
2020-05-21 21:07:56,208:     if sa_url.drivername.startswith('mysql'):
2020-05-21 21:11:50,017: Error running WSGI application
2020-05-21 21:11:50,026: AttributeError: 'NoneType' object has no attribute 'drivername'
2020-05-21 21:11:50,026:   File "/home/eczeno/.virtualenvs/env/lib/python3.8/site-packages/flask/app.py", line 2464, in __call__
2020-05-21 21:11:50,027:     return self.wsgi_app(environ, start_response)
2020-05-21 21:11:50,027: 
2020-05-21 21:11:50,027:   File "/home/eczeno/.virtualenvs/env/lib/python3.8/site-packages/flask/app.py", line 2450, in wsgi_app
2020-05-21 21:11:50,027:     response = self.handle_exception(e)
2020-05-21 21:11:50,027: 
2020-05-21 21:11:50,027:   File "/home/eczeno/.virtualenvs/env/lib/python3.8/site-packages/flask/app.py", line 1867, in handle_exception
2020-05-21 21:11:50,028:     reraise(exc_type, exc_value, tb)
2020-05-21 21:11:50,028: 
2020-05-21 21:11:50,028:   File "/home/eczeno/.virtualenvs/env/lib/python3.8/site-packages/flask/_compat.py", line 39, in reraise
2020-05-21 21:11:50,028:     raise value
2020-05-21 21:11:50,028: 
2020-05-21 21:11:50,028:   File "/home/eczeno/.virtualenvs/env/lib/python3.8/site-packages/flask/app.py", line 2447, in wsgi_app
2020-05-21 21:11:50,029:     response = self.full_dispatch_request()
2020-05-21 21:11:50,029: 
2020-05-21 21:11:50,029:   File "/home/eczeno/.virtualenvs/env/lib/python3.8/site-packages/flask/app.py", line 1952, in full_dispatch_request
2020-05-21 21:11:50,029:     rv = self.handle_user_exception(e)
2020-05-21 21:11:50,029: 
2020-05-21 21:11:50,029:   File "/home/eczeno/.virtualenvs/env/lib/python3.8/site-packages/flask/app.py", line 1821, in handle_user_exception
2020-05-21 21:11:50,030:     reraise(exc_type, exc_value, tb)
2020-05-21 21:11:50,030: 
2020-05-21 21:11:50,030:   File "/home/eczeno/.virtualenvs/env/lib/python3.8/site-packages/flask/_compat.py", line 39, in reraise
2020-05-21 21:11:50,030:     raise value
2020-05-21 21:11:50,030: 
2020-05-21 21:11:50,030:   File "/home/eczeno/.virtualenvs/env/lib/python3.8/site-packages/flask/app.py", line 1950, in full_dispatch_request
2020-05-21 21:11:50,031:     rv = self.dispatch_request()
2020-05-21 21:11:50,031: 
2020-05-21 21:11:50,031:   File "/home/eczeno/.virtualenvs/env/lib/python3.8/site-packages/flask/app.py", line 1936, in dispatch_request
2020-05-21 21:11:50,031:     return self.view_functions[rule.endpoint](**req.view_args)
2020-05-21 21:11:50,031: 
2020-05-21 21:11:50,031:   File "/home/eczeno/Recipe-db/recipeapp/routes.py", line 12, in home
2020-05-21 21:11:50,031:     recipes = Recipe.query.all()
2020-05-21 21:11:50,032: 
2020-05-21 21:11:50,032:   File "/home/eczeno/.virtualenvs/env/lib/python3.8/site-packages/flask_sqlalchemy/__init__.py", line 519, in __get__
2020-05-21 21:11:50,032:     return type.query_class(mapper, session=self.sa.session())
2020-05-21 21:11:50,032: 
2020-05-21 21:11:50,032:   File "/home/eczeno/.virtualenvs/env/lib/python3.8/site-packages/sqlalchemy/orm/scoping.py", line 78, in __call__
2020-05-21 21:11:50,032:     return self.registry()
2020-05-21 21:11:50,032: 
2020-05-21 21:11:50,033:   File "/home/eczeno/.virtualenvs/env/lib/python3.8/site-packages/sqlalchemy/util/_collections.py", line 1032, in __call__
2020-05-21 21:11:50,033:     return self.registry.setdefault(key, self.createfunc())
2020-05-21 21:11:50,033: 
2020-05-21 21:11:50,033:   File "/home/eczeno/.virtualenvs/env/lib/python3.8/site-packages/sqlalchemy/orm/session.py", line 3254, in __call__
2020-05-21 21:11:50,034:     return self.class_(**local_kw)
2020-05-21 21:11:50,034: 
2020-05-21 21:11:50,034:   File "/home/eczeno/.virtualenvs/env/lib/python3.8/site-packages/flask_sqlalchemy/__init__.py", line 138, in __init__
2020-05-21 21:11:50,034:     bind = options.pop('bind', None) or db.engine
2020-05-21 21:11:50,034: 
2020-05-21 21:11:50,034:   File "/home/eczeno/.virtualenvs/env/lib/python3.8/site-packages/flask_sqlalchemy/__init__.py", line 937, in engine
2020-05-21 21:11:50,034:     return self.get_engine()
2020-05-21 21:11:50,035: 
2020-05-21 21:11:50,035:   File "/home/eczeno/.virtualenvs/env/lib/python3.8/site-packages/flask_sqlalchemy/__init__.py", line 956, in get_engine
2020-05-21 21:11:50,035:     return connector.get_engine()
2020-05-21 21:11:50,035: 
2020-05-21 21:11:50,035:   File "/home/eczeno/.virtualenvs/env/lib/python3.8/site-packages/flask_sqlalchemy/__init__.py", line 560, in get_engine
2020-05-21 21:11:50,035:     options = self.get_options(sa_url, echo)
2020-05-21 21:11:50,036: 
2020-05-21 21:11:50,036:   File "/home/eczeno/.virtualenvs/env/lib/python3.8/site-packages/flask_sqlalchemy/__init__.py", line 575, in get_options
2020-05-21 21:11:50,036:     self._sa.apply_driver_hacks(self._app, sa_url, options)
2020-05-21 21:11:50,036: 
2020-05-21 21:11:50,036:   File "/home/eczeno/.virtualenvs/env/lib/python3.8/site-packages/flask_sqlalchemy/__init__.py", line 877, in apply_driver_hacks
2020-05-21 21:11:50,036:     if sa_url.drivername.startswith('mysql'):

and here is what it shows with debug off:

2020-05-21 19:43:58,388: Exception on / [GET]
Traceback (most recent call last):
  File "/home/eczeno/.virtualenvs/env/lib/python3.8/site-packages/sqlalchemy/util/_collections.py", line 1030, in __call__
    return self.registry[key]
KeyError: 139845459814272
**NO MATCH**
During handling of the above exception, another exception occurred:
**NO MATCH**
Traceback (most recent call last):
  File "/home/eczeno/.virtualenvs/env/lib/python3.8/site-packages/flask/app.py", line 2447, in wsgi_app
    response = self.full_dispatch_request()
  File "/home/eczeno/.virtualenvs/env/lib/python3.8/site-packages/flask/app.py", line 1952, in full_dispatch_request
    rv = self.handle_user_exception(e)
  File "/home/eczeno/.virtualenvs/env/lib/python3.8/site-packages/flask/app.py", line 1821, in handle_user_exception
    reraise(exc_type, exc_value, tb)
  File "/home/eczeno/.virtualenvs/env/lib/python3.8/site-packages/flask/_compat.py", line 39, in reraise
    raise value
  File "/home/eczeno/.virtualenvs/env/lib/python3.8/site-packages/flask/app.py", line 1950, in full_dispatch_request
    rv = self.dispatch_request()
  File "/home/eczeno/.virtualenvs/env/lib/python3.8/site-packages/flask/app.py", line 1936, in dispatch_request
    return self.view_functions[rule.endpoint](**req.view_args)
  File "/home/eczeno/Recipe-db/recipeapp/routes.py", line 12, in home
    recipes = Recipe.query.all()
  File "/home/eczeno/.virtualenvs/env/lib/python3.8/site-packages/flask_sqlalchemy/__init__.py", line 519, in __get__
    return type.query_class(mapper, session=self.sa.session())
  File "/home/eczeno/.virtualenvs/env/lib/python3.8/site-packages/sqlalchemy/orm/scoping.py", line 78, in __call__
    return self.registry()
  File "/home/eczeno/.virtualenvs/env/lib/python3.8/site-packages/sqlalchemy/util/_collections.py", line 1032, in __call__
    return self.registry.setdefault(key, self.createfunc())
  File "/home/eczeno/.virtualenvs/env/lib/python3.8/site-packages/sqlalchemy/orm/session.py", line 3254, in __call__
    return self.class_(**local_kw)
  File "/home/eczeno/.virtualenvs/env/lib/python3.8/site-packages/flask_sqlalchemy/__init__.py", line 138, in __init__
    bind = options.pop('bind', None) or db.engine
  File "/home/eczeno/.virtualenvs/env/lib/python3.8/site-packages/flask_sqlalchemy/__init__.py", line 937, in engine
    return self.get_engine()
  File "/home/eczeno/.virtualenvs/env/lib/python3.8/site-packages/flask_sqlalchemy/__init__.py", line 956, in get_engine
    return connector.get_engine()
  File "/home/eczeno/.virtualenvs/env/lib/python3.8/site-packages/flask_sqlalchemy/__init__.py", line 560, in get_engine
    options = self.get_options(sa_url, echo)
  File "/home/eczeno/.virtualenvs/env/lib/python3.8/site-packages/flask_sqlalchemy/__init__.py", line 575, in get_options
    self._sa.apply_driver_hacks(self._app, sa_url, options)
  File "/home/eczeno/.virtualenvs/env/lib/python3.8/site-packages/flask_sqlalchemy/__init__.py", line 877, in apply_driver_hacks
    if sa_url.drivername.startswith('mysql'):
AttributeError: 'NoneType' object has no attribute 'drivername'

I am lost, so I don't know the relevant code to show here. Any help would be great.

Can we take a look at your code? We can see it from our admin interface, but we always ask for permission first.

Yes, you may look at my code.

I did actually get it up. I had my .env file in the wrong place. But this is my first time doing this, so any comments or advice are welcome.

Also, my app scrapes recipes from sites like allrecipes.com. I see that my free account is restricted in accessing other sites, can you explain how this works?

Thanks for responding.

Glad to hear you worked it out!

Free accounts can only access other sites if they're on the whitelist -- we can add new sites to that list, but only if they offer an official public API. If the site you're trying to access has such an API, you can post a link to the documentation and we'll look into adding it.

Ok, I will look into the withelist. Thanks for your help.