gpt4 book ai didi

python - 扩展 Pyramid 应用程序时出现 SQLalchemy 问题

转载 作者:行者123 更新时间:2023-11-28 17:52:23 25 4
gpt4 key购买 nike

我有一个“主应用程序”,在这个应用程序中,我在 init.py 文件中有以下内容:

def main(global_config, **settings):
# various config settings
config.include(site_configs)

def site_configs(config):
config.add_route('portfolio', '/portfolio',
view='mainapp.views.portfolio',
view_renderer='/site/portfolio.mako')

在 views.py 中我有:

def portfolio(request):
## some code here
project_records = dbsession.query(projects).from_statement(
'SELECT * FROM projects ORDER by id DESC').all()

return {'project_records': project_records}

然后我有一个新的应用程序,我想扩展它。

所以在init.py 中我做了:

from mainapp import site_configs

def main(global_config, **settings):
# various config settings
config.include(site_configs)

但是当我运行这个新的应用程序时,我收到以下错误(完整回溯在该消息的底部):

UnboundExecutionError: Could not locate a bind configured on mapper 
Mapper|projects|projects, SQL expression or this Session

sqlalchemy 引擎已在两个应用程序中正确设置。

此外,我想做的是在新应用程序中使用数据库,而不是在原始主应用程序中使用数据库。

----------------------------
Full Traceback
----------------------------

URL: http://127.0.0.1:6543/portfolio
Module weberror.evalexception:431 in respond view
>> app_iter = self.application(environ, detect_start_response)
Module repoze.tm:23 in __call__ view
>> result = self.application(environ, save_status_and_headers)
Module pyramid.router:158 in __call__ view
>> response = view_callable(context, request)
Module pyramid.config:2824 in _rendered_view view
>> response = wrapped_view(context, request)
Module pyramid.config:2916 in _requestonly_view view
>> response = view(request)
Module mainapp.views:62 in portfolio view
>> project_records = dbsession.query(projects).from_statement('SELECT * FROM projects ORDER by id DESC').all()
Module sqlalchemy.orm.query:1579 in all view
>> return list(self)
Module sqlalchemy.orm.query:1689 in __iter__ view
>> return self._execute_and_instances(context)
Module sqlalchemy.orm.query:1694 in _execute_and_instances view
>> mapper=self._mapper_zero_or_none())
Module sqlalchemy.orm.session:717 in execute view
>> engine = self.get_bind(mapper, clause=clause, **kw)
Module sqlalchemy.orm.session:853 in get_bind view
>> ', '.join(context)))

最佳答案

嗯,这真的与 Pyramid 无关。您有一个全局变量 dbsession,您正试图在应用程序的不同子应用程序之间共享它。如果您的所有应用程序的模型都相同,那么您应该只有一个初始化函数来在 main() 中配置您的全局。如果您对不同的子应用程序有不同的模型,那很好,但您真的不应该尝试以重叠的方式将它们全部插入同一个全局,这听起来就像这里正在发生的那样。也许你可以更具体地说明你打算如何让它发挥作用?

关于python - 扩展 Pyramid 应用程序时出现 SQLalchemy 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7374612/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com