1

我导出了一个名为的变量DBURL='postgresql://string',我想在我的配置 ini 文件中使用它,例如::

[app:kotti]
sqlalchemy.url = %(DBURL)s

那是行不通的。

4

2 回答 2

2

把它放在你的__init__.py

def expandvars_dict(settings):
    """Expands all environment variables in a settings dictionary."""
    return dict((key, os.path.expandvars(value)) for
                key, value in settings.items())

然后,当您将环境变量导出到 shell 时,正确的语法是:

sqlalchemy.url = ${DBURL}

一旦在 . 中设置了该环境变量.ini,就可以使用configparser语法:

sqlalchemy.connection = %(sqlalchemy.url)s%(user:pass and other stuff)s

从https://stackoverflow.com/a/16446566/2214933窃取的想法

于 2018-05-08T21:22:36.923 回答
1

PasteDeploy(这里使用的ini格式金字塔)不支持直接从环境变量中读取。几个常见的选项是:

1) 在您的main.

import os

def main(global_config, **settings):
    settings['sqlalchemy.url'] = os.environ['DBURL']
    config = Configurator(settings=settings)
    ...

2) 将您的 ini 文件定义为 jinja2 模板,并使用命令将其呈现为 ini 格式,然后将其作为部署过程的一部分运行。

于 2018-05-09T17:48:26.313 回答