【问题标题】:how can i get the ini data in pyramid?如何获取金字塔中的 ini 数据?
【发布时间】:2012-06-09 06:05:11
【问题描述】:

金字塔项目中有一个 development.ini 或 production.ini。我将自己的配置数据添加到 ini 文件如下:

[thrift]
host = 0.0.0.0
port = 8080

我想在项目的一个 py 文件中使用配置数据。 如何在没有请求对象的情况下获取数据? (我见过一个使用请求的解决方案。)

【问题讨论】:

    标签: pyramid ini


    【解决方案1】:

    想想“蟒蛇”而不是“金字塔”。

    import ConfigParser
    
    config = ConfigParser.ConfigParser()
    config.read('development.ini')
    db_url = config.get('app:main', 'sqlalchemy.url')
    

    【讨论】:

    • Pyramid 在其无限智慧中使用PasteDeployConfigParser 不起作用:它不接受在键名中包含 .
    • 硬编码是不好的做法。
    【解决方案2】:

    每当我想知道如何在金字塔中做某事时,我通常会参考 github 上的金字塔示例之一。

    Parsing Example Pyramid Config

    我不知道它们有多“火爆”,但它们通常可以正常工作。在这里,他们只是使用ConfigParser,就像您在任何 python 项目中解析您的 .ini 文件一样

    【讨论】:

      【解决方案3】:

      您可以通过request.registry.settingspyramid.threadlocal.get_current_registry().settings 访问设置。它的行为类似于字典。

      如果您想使用第二个,即在没有请求的情况下获取设置,我必须警告您。根据the doc

      这个函数应该非常谨慎地使用,通常只在单元中使用 测试代码。使用它几乎总是一个错误 get_current_registry 在测试上下文之外,因为它的使用使得 可以编写既不容易测试也不容易的代码 脚本。

      需要访问设置的代码的任何部分都是 Web 应用程序的一部分,并且应该访问请求,而不是一些可以神奇地访问的全局。你可能认为你有充分的理由,但可能有更好的方法。如果您想讨论这个问题(如果它很复杂,可能会在另一个问题中讨论,因为一些代码会有所帮助),我很乐意帮助您找到一种干净的方法。

      【讨论】:

      • 谢谢。编辑以使其在答案中更清晰。顺便说一下,注册表不是设置文件(见pyramid.readthedocs.org/en/1.3-branch/…)。
      • 请注意,要添加自定义设置并使用此答案,您不能将其添加到新部分中。您需要将其添加到现有的 [app:main] 部分。见the documentation
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-10-18
      • 2012-08-29
      • 1970-01-01
      • 2015-07-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多