Python .ini文件加载环境变量

Python .ini文件加载环境变量,python,flask,ini,alembic,Python,Flask,Ini,Alembic,我正在一个Flask项目中使用迁移实现。有一个alembic.ini文件,必须在其中指定数据库配置: sqlalchemy.url=driver://user:password@主机/dbname 有没有办法从环境变量中指定参数?我曾尝试以这种方式加载它们,$(env_var),但没有成功。谢谢 我通过在env.py中设置@dirn建议的sqlalchemy.url解决了这个问题 config.set\u main\u选项('sqlalchemy.url',)成功了,可以从环境或配置文件中加载。

我正在一个
Flask
项目中使用迁移实现。有一个
alembic.ini
文件,必须在其中指定数据库配置:

sqlalchemy.url=driver://user:password@主机/dbname


有没有办法从环境变量中指定参数?我曾尝试以这种方式加载它们,
$(env_var)
,但没有成功。谢谢

我通过在
env.py
中设置@dirn建议的
sqlalchemy.url
解决了这个问题


config.set\u main\u选项('sqlalchemy.url',)
成功了,可以从环境或配置文件中加载

我正在寻找一段时间如何管理多个数据库

这就是我所做的。我有两个数据库:日志和ohlc

据报道,, 我已经像那样设置了alembic

alembic init --template multidb
阿莱姆比奇·尼尼 环境保护 config.yml 用法

SETTINGS=config.yml alembic upgrade head

希望能有帮助

@Oz123,
sqlalchemy.url=$(DB\u服务):/$(DB\u用户):$(DB\u通行证)@$(DB\u主机)/$(DB\u名称)
您考虑过使用吗?@dirn我正在使用带有声明性基的sqlalchemy,但据我所知,
Flask Migrate
仅与
Flask sqlalchemy
兼容,您是对的。我猜我只是以为你在用那个。为什么不改为在
env.py
中设置
sqlachemy.url
?您能为解决方案提供更多信息吗?我不确定这个env.py文件在哪里。@Cruncher在项目的alembic目录中,请参阅
[...]
# this is the Alembic Config object, which provides
# access to the values within the .ini file in use.
config = context.config

# Interpret the config file for Python logging.
# This line sets up loggers basically.
fileConfig(config.config_file_name)
logger = logging.getLogger('alembic.env')

# overwrite alembic.ini db urls from the config file
settings_path = os.environ.get('SETTINGS')
if settings_path:
    with open(settings_path) as fd:
        settings = conf.load(fd, context=os.environ) # loads the config.yml
    config.set_section_option("ohlc", "sqlalchemy.url", settings["databases"]["ohlc"])
    config.set_section_option("logs", "sqlalchemy.url", settings["databases"]["logs"])
else:
    logger.warning('Environment variable SETTINGS missing - use default alembic.ini configuration')
[...]
databases:
    logs: postgresql://botcrypto:botcrypto@127.0.0.1:5432/logs
    ohlc: postgresql://botcrypto:botcrypto@127.0.0.1:5432/ohlc
SETTINGS=config.yml alembic upgrade head