如何获取金字塔中的 ini 数据?

Posted

技术标签:

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

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

[thrift]
host = 0.0.0.0
port = 8080

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

【问题讨论】:

【参考方案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。

以上是关于如何获取金字塔中的 ini 数据?的主要内容,如果未能解决你的问题,请参考以下文章

如何在金字塔ini文件中使用系统环境变量?

如何从r中的.ini文件中提取数据?

如何从 SQLAlchemy 结果中获取列名(声明性语法)

如何在 shell 脚本中获取 INI 值?

Php7中如何获取ini配置?

如何在ARCGIS中加载海量影像数据