【发布时间】:2018-10-18 21:01:31
【问题描述】:
我导出了一个名为DBURL='postgresql://string'的变量,我想在我的配置ini文件中使用它,例如::
[app:kotti]
sqlalchemy.url = %(DBURL)s
这不行。
【问题讨论】:
标签: postgresql sqlalchemy pyramid ini kotti
我导出了一个名为DBURL='postgresql://string'的变量,我想在我的配置ini文件中使用它,例如::
[app:kotti]
sqlalchemy.url = %(DBURL)s
这不行。
【问题讨论】:
标签: postgresql sqlalchemy pyramid ini kotti
把这个放在你的__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
【讨论】:
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 格式,然后将其作为部署过程的一部分运行。
【讨论】: