在Django项目中应将SQLAlchemy Engine/Connection对象放置于何处?
在Django项目中放置SQLAlchemy Engine对象的方案
推荐放置位置
- 项目根目录的独立配置文件:新建
sqlalchemy_config.py文件,集中定义Engine对象,方便所有模块导入使用。示例代码:
from sqlalchemy import create_engine from django.conf import settings # 从Django配置中读取数据库信息,避免硬编码敏感信息 engine = create_engine( f"postgresql+psycopg2://{settings.DB_USER}:{settings.DB_PASSWORD}@{settings.DB_HOST}:{settings.DB_PORT}/{settings.DB_NAME}" )
- 模型/查询包内的配置文件:如果你的SQLAlchemy模型和查询方法已经有单独的包(比如
sqlalchemy_models/),可以把Engine放在该包的config.py或__init__.py中,让同包内的代码直接引用,保持结构一致性。
关键注意事项
- 不要在视图函数或每次请求时重复创建Engine:Engine是线程安全的,全局单例即可,重复实例化会造成数据库连接资源浪费。
- 禁止硬编码数据库凭证:在Django的
settings.py中添加数据库配置项,再从配置中读取,示例:
# settings.py中添加 DB_USER = "scott" DB_PASSWORD = "tiger" DB_HOST = "localhost" DB_PORT = 5432 DB_NAME = "mydatabase"
- 测试环境适配:如果使用Django测试框架,要单独配置测试用的Engine,避免测试操作污染生产数据库。
内容的提问来源于stack exchange,提问作者PaleNeutron
相关产品推荐
相关产品推荐

