【发布时间】:2016-07-04 05:22:50
【问题描述】:
我正在尝试使用 Werkzeug 构建一个小型 WSGI 应用程序。我关注了这个tutorial,它非常简单明了。但是我遇到了这个错误:
File "/Users/username/my_app/assigment2/app.py", line 38, in __init__
self.database_engine = create_engine(db_uri)
File "/Users/Data/lib/python3.4/site-packages/sqlalchemy/engine/__init__.py", line 386, in create_engine
return strategy.create(*args, **kwargs)
File "/Users/../lib/python3.4/site-packages/sqlalchemy/engine/strategies.py", line 51, in create
dialect_cls = u.get_dialect()
AttributeError: 'function' object has no attribute 'get_dialect'
我已经导入了所有的 SqlAlchemy 模块
from sqlalchemy import create_engine, MetaData
from sqlalchemy.orm import create_session, scoped_session
应用程序在应用程序的 init 处失败。
class App(object):
def __init__(self):
local.app = self
self.database_engine = create_engine(SQLALCHEMY_DATABASE_URI )
self.jinja_env = Environment(loader=PackageLoader('app', '/templates'))
self.dispatch = SharedDataMiddleware(self.dispatch, {'/static': STATIC_PATH})
def init_database(self):
metadata.create_all(self.database_engine)
def dispatch(self, environ, start_response):
local.app = self
request = Response(environ)
local.url_= adapter = url_map.bind_to_environ(environ)
#adapter = url_map.bind_to_environ(environ)
try:
endpoint, value = adapter.match()
handler = getattr(views, endpoint)
response = handler(request, **values)
except HTTPException as e:
response = e
return ClosingIterator(response(environ, strat_response),
[session.remove, local_manager.cleanup])
def __call__(self, environ, start_response):
return self.dispatch(environ, start_response)
databse_uri 看起来像这样
SQLALCHEMY_DATABASE_URI = 'postgresql://user:password@localhost:5432/name_db'
STATIC_PATH = path.join(path.dirname('/static'), 'static')
为什么我不能像这样创建我的应用程序:
def make_app():
my_app = app.App()
return my_app
我在 Gunicorn 上运行
gunicorn -b 127.0.0.1:9000 app:make_app
新错误:
TypeError: make_app() takes 0 positional arguments but 2 were given
【问题讨论】:
标签: python sqlalchemy wsgi werkzeug