beaker icon indicating copy to clipboard operation
beaker copied to clipboard

'MetaData' object has no attribute 'schema'

Open rsyring opened this issue 12 years ago • 2 comments

Recently setup a project on a production server and encountered the exception below. Same setup with 1.6.3 doesn't throw an error. I'm assuming it has something to do with this change in 1.6.4:

Add ability to specify schema for database-backed sessions.

Traceback (most recent call last):
  File "/home/mcmweb/venv/lib/python2.6/site-packages/Werkzeug-0.8.3-py2.6.egg/werkzeug/serving.py", line 159, in run_wsgi
    execute(app)
  File "/home/mcmweb/venv/lib/python2.6/site-packages/Werkzeug-0.8.3-py2.6.egg/werkzeug/serving.py", line 146, in execute
    application_iter = app(environ, start_response)
  File "/home/mcmweb/venv/lib/python2.6/site-packages/Paste-1.7.5.1-py2.6.egg/paste/registry.py", line 379, in __call__
    app_iter = self.application(environ, start_response)
  File "/home/mcmweb/venv/lib/python2.6/site-packages/BlazeWeb-0.4.6-py2.6.egg/blazeweb/middleware.py", line 152, in __call__
    return self.wsgiapp(environ, start_response)
  File "/home/mcmweb/venv/lib/python2.6/site-packages/Werkzeug-0.8.3-py2.6.egg/werkzeug/wsgi.py", line 411, in __call__
    return self.app(environ, start_response)
  File "/home/mcmweb/venv/lib/python2.6/site-packages/Beaker-1.6.4-py2.6.egg/beaker/middleware.py", line 155, in __call__
    return self.wrap_app(environ, session_start_response)
  File "/home/mcmweb/venv/lib/python2.6/site-packages/SQLAlchemyBWC-0.2.5-py2.6.egg/sqlalchemybwc/lib/middleware.py", line 113, in __call__
    return self.application(environ, start_response)
  File "/home/mcmweb/venv/lib/python2.6/site-packages/BlazeWeb-0.4.6-py2.6.egg/blazeweb/application.py", line 382, in __call__
    return self.wsgi_app(environ, start_response)
  File "/home/mcmweb/venv/lib/python2.6/site-packages/BlazeWeb-0.4.6-py2.6.egg/blazeweb/application.py", line 319, in wsgi_app
    return response(environ, start_response)
  File "/home/mcmweb/venv/lib/python2.6/site-packages/Werkzeug-0.8.3-py2.6.egg/werkzeug/wrappers.py", line 1083, in __call__
    start_response(status, headers)
  File "/home/mcmweb/venv/lib/python2.6/site-packages/Beaker-1.6.4-py2.6.egg/beaker/middleware.py", line 149, in session_start_response
    session.persist()
  File "/home/mcmweb/venv/lib/python2.6/site-packages/Beaker-1.6.4-py2.6.egg/beaker/session.py", line 717, in persist
    self._session().save()
  File "/home/mcmweb/venv/lib/python2.6/site-packages/Beaker-1.6.4-py2.6.egg/beaker/session.py", line 405, in save
    **self.namespace_args)
  File "/home/mcmweb/venv/lib/python2.6/site-packages/Beaker-1.6.4-py2.6.egg/beaker/ext/database.py", line 98, in __init__
    self.cache = DatabaseNamespaceManager.tables.get(table_key, make_cache)
  File "/home/mcmweb/venv/lib/python2.6/site-packages/Beaker-1.6.4-py2.6.egg/beaker/util.py", line 171, in get
    return self.sync_get(key, createfunc, *args, **kwargs)
  File "/home/mcmweb/venv/lib/python2.6/site-packages/Beaker-1.6.4-py2.6.egg/beaker/util.py", line 182, in sync_get
    return self._create(key, createfunc, *args, **kwargs)
  File "/home/mcmweb/venv/lib/python2.6/site-packages/Beaker-1.6.4-py2.6.egg/beaker/util.py", line 189, in _create
    self[key] = obj = createfunc(*args, **kwargs)
  File "/home/mcmweb/venv/lib/python2.6/site-packages/Beaker-1.6.4-py2.6.egg/beaker/ext/database.py", line 91, in make_cache
    schema=schema_name if schema_name else meta.schema
AttributeError: 'MetaData' object has no attribute 'schema'

rsyring avatar Sep 17 '12 18:09 rsyring

SQLAlchemy's MetaData's schema attribute is only guaranteed in later versions. I don't think we have a minimum SQLA version requirement, so we should fix this unless the version you're using is ancient

pjenvey avatar Sep 18 '12 01:09 pjenvey

I was using 0.6.9, but only accidentally. I had some old package that required a pre 0.7 version. I can fix on my side pretty easy.

FWIW, if you can check for .schema and easily avoid the exception, that seems best for BC reasons. If not, then I would think a check for .schema before hand and an exception warning about SA version incompatibility would be helpful.

Thanks for your work on Beaker!

rsyring avatar Sep 18 '12 14:09 rsyring