欢迎访问宙启技术站
智能推送

Python中如何使用Env()函数实现不同环境的数据库连接

发布时间:2023-12-26 07:45:25

在Python中,可以使用os模块的environ方法来获取当前环境变量。然后,可以使用dotenv库来加载.env文件中定义的环境变量。通过这种方式,可以轻松地在不同环境中使用不同的数据库连接。

首先,需要安装dotenv库,可以通过命令pip install python-dotenv进行安装。

在项目目录中,创建一个.env文件,用于存储不同环境的数据库连接信息。该文件的格式如下:

DB_HOST_DEV=localhost
DB_PORT_DEV=5432
DB_USER_DEV=username
DB_PASSWORD_DEV=password
DB_NAME_DEV=test_db

DB_HOST_PROD=prod_host
DB_PORT_PROD=5432
DB_USER_PROD=prod_username
DB_PASSWORD_PROD=prod_password
DB_NAME_PROD=prod_db

然后,在Python代码中引入dotenv库,并使用load_dotenv方法加载.env文件中定义的环境变量:

from dotenv import load_dotenv
import os

load_dotenv()

加载之后,可以使用os.environ来访问.env文件中定义的环境变量。为了使代码更加易读和可维护,在代码中可以定义一个Env类来管理不同环境的数据库连接信息。这个类可以根据当前环境的DB_ENV变量来决定使用哪个数据库连接参数。

class Env:

    def __init__(self, env):
        self.env = env

    def db_connection_info(self):
        host = os.environ.get(f"DB_HOST_{self.env}")
        port = os.environ.get(f"DB_PORT_{self.env}")
        user = os.environ.get(f"DB_USER_{self.env}")
        password = os.environ.get(f"DB_PASSWORD_{self.env}")
        name = os.environ.get(f"DB_NAME_{self.env}")

        return {
            'host': host,
            'port': port,
            'user': user,
            'password': password,
            'name': name
        }

在使用的时候,可以根据当前环境创建一个Env对象,并通过db_connection_info方法获取当前环境的数据库连接信息。

env = os.environ.get('DB_ENV', 'DEV')   # 默认为开发环境
env_obj = Env(env)
db_info = env_obj.db_connection_info()

print(db_info)

# 输出结果:
# {
#   'host': 'localhost',
#   'port': '5432',
#   'user': 'username',
#   'password': 'password',
#   'name': 'test_db'
# }

在这个示例中,默认的环境是开发环境,如果需要切换到生产环境,只需要在.env文件或者环境变量中设置DB_ENVPROD即可。

通过使用Env类,可以方便地在不同环境中切换数据库连接。这样,在开发、测试和生产环境之间切换时,只需要更改.env文件或者环境变量的设置,而不需要修改代码。