【问题标题】:Pyramid fails to start when webtest and sqlalchemy are used together当 webtest 和 sqlalchemy 一起使用时 Pyramid 无法启动
【发布时间】:2016-02-19 02:22:27
【问题描述】:

我正在尝试设置一个金字塔应用程序以同时使用 webtest 和 sqlalchemy。 如果我注释掉 SQLAlchemy 代码,webtests 运行没有问题。

[测试日志]https://travis-ci.org/caffeinated-expert/frisbee/builds/91622436

Error
Traceback (most recent call last):
  File "frisbee/frisbee/tests/test_cities_page.py", line 18, in setUp
    app = main({})
  File "frisbee/frisbee/__init__.py", line 15, in main
    engine = engine_from_config(settings, 'sqlalchemy.')
  File "build/bdist.macosx-10.10-x86_64/egg/sqlalchemy/engine/__init__.py", line 426, in engine_from_config
    url = options.pop('url')
KeyError: 'url'

在我的主 init 文件中,如果我注释掉 sqlalchemy 引擎设置,那么测试运行良好,但我的项目需要 sqlalchemy。

这是我第一次使用webtest,所以不确定我是否有其他冲突的配置。

[失败代码]https://github.com/caffeinated-expert/frisbee/commit/ea759015de755aca1d7bffca2845b72944572bed

【问题讨论】:

    标签: python sqlalchemy pyramid webtest


    【解决方案1】:

    来自sqlaclhemy docs:

    唯一需要的键是(假设默认前缀)sqlalchemy.url

    在您的test_cities_page.py 文件中,您使用空字典调用main,大概是为**settings 解包。您需要将适当的设置添加到您传递给函数的字典中,并且它应该运行。 :)

    【讨论】:

    • 我试过这个并得到同样的错误 SQLALCHEMY_URL = "sqlite:///%(here)s/db/frisbee.sqlite" app = main({'url': SQLALCHEMY_URL}) 或app = main({'sqlalchemy.url': SQLALCHEMY_URL})
    • 你有没有向global_config传递任何东西?如果你还没用,我会打电话给app = main(global_config = None, **settings)。
    • 干杯,这是一种享受。非常感谢你。 [任何有兴趣的人的差异]github.com/caffeinated-expert/frisbee/compare/…
    • 很高兴听到。虽然我从未使用过 Pyramid,但您可能需要考虑观看此视频 Patterns for building large Pyramids applications 以了解有关 Pyramid 中使用的习语和设计架构的更多信息。我试着给你找一个样板来阅读,但我能找到的唯一一个是几年前的。祝你有美好的一天,伙计。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-05-05
    • 2020-07-23
    • 2013-02-20
    • 2012-02-05
    • 2017-07-06
    相关资源
    最近更新 更多