0%

SQLModel自学教程(3) - 环境变量管理

1.环境变量基础概念

1
2
3
4
5
# 创建环境变量(Linux/macOS)
$ export DATABASE_URL="sqlite:///test.db"

# 创建环境变量(Windows PowerShell)
$ $Env:DATABASE_URL = "sqlite:///test.db"
  • 环境变量是存储在操作系统中的键值对
  • 常用于管理数据库连接、API密钥等敏感配置
  • 支持跨平台操作(Linux/Windows/macOS)

2.读取环境变量

1
2
3
4
5
import os

# 读取环境变量并设置默认值
db_url = os.getenv("DATABASE_URL", "sqlite:///default.db")
print(f"Database URL: {db_url}")
  • os.getenv() 方法支持默认值设置
  • 未设置环境变量时返回None或自定义默认值
  • 适用于临时调试和长期配置管理

3.应用场景示例

graph LR
    A[代码开发] --> B{环境变量}
    B --> C[本地测试配置]
    B --> D[生产环境配置]
    B --> E[敏感信息隔离]
  • 典型使用场景
    • 数据库连接字符串管理
    • 第三方API密钥存储
    • 运行模式切换(开发/生产)
    • 日志级别配置

4.临时环境变量设置

1
2
3
4
5
# 单次运行临时设置(Linux/macOS)
$ DATABASE_URL="sqlite:///temp.db" python app.py

# 单次运行临时设置(Windows)
> $Env:DATABASE_URL="sqlite:///temp.db"; python app.py
  • 生命周期仅限当前命令执行期间
  • 不会污染系统环境变量
  • 适合快速测试不同配置场景

5.类型与验证

1
2
3
# 环境变量类型转换示例
max_conn = int(os.getenv("MAX_CONNECTIONS", "10"))
debug_mode = os.getenv("DEBUG", "False").lower() == "true"
  • 环境变量值始终为字符串类型
  • 需手动转换数值/布尔类型
  • 建议结合Pydantic进行高级验证

提示:在FastAPI等框架中推荐使用pydantic.BaseSettings进行环境变量管理,实现类型自动转换和验证