gpt4 book ai didi

python - 在 alembic 中配置 env.py 文件时使用 .env 变量

转载 作者:行者123 更新时间:2023-12-02 01:47:32 27 4
gpt4 key购买 nike

根据我看到的帖子,这是将 alembic.ini sqlalchemy.url 指向 alembic env.py 文件中所需的数据库路径的最常见方法

import os

from logging.config import fileConfig

from sqlalchemy import engine_from_config
from sqlalchemy import pool

from alembic import context

# this is the Alembic Config object, which provides
# access to the values within the .ini file in use.

connection_string = f'postgresql+psycopg2://<username>:<password>@localhost/test_server'

config = context.config
config.set_main_option('sqlalchemy.url', connection_string)

当值只是一个硬编码字符串时,这对我有用。但是,当我尝试用来 self 的 .env 文件的隐藏变量替换用户名和密码值时,我总是收到操作错误:

sqlalchemy.exc.OperationalError: (psycopg2.OperationalError) FATAL:  role "None" does not exist
username = os.environ.get("USERNAME")
password = os.environ.get("PASSWORD")

connection_string = f'postgresql+psycopg2://{username}:{password}@localhost/test_server'

config = context.config
config.set_main_option('sqlalchemy.url', connection_string)

我做错了什么不允许我使用我的环境变量?

最佳答案

我建议使用 dotenv (pip install python-dotenv) 像这样:

import os
from dotenv import load_dotenv

load_dotenv()

username = os.environ.get("USERNAME")
password = os.environ.get("PASSWORD")

(dotenv 没有任何外部库依赖,这很好)

关于python - 在 alembic 中配置 env.py 文件时使用 .env 变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70750753/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com