FastAPI 学习之路(五十三)根据环境不同连接不同数据库
在实际的开发过程中,我们数据库,可以根据连接的环境不一样,我们会拆分成不一样的数据库,根据我们所要用的环境来选择对应的数据库即可,那么我们应该如何去实现根据选择去选择不一样的数据库呢。
首先,我们找一个配置的文件,我们这里演示 我们使用config.py去配置环境。配置如下
EVENT="test"
接下来,我们去创建一个测试用的数据库配置,起名:testDatabse.py
from sqlalchemy import create_engine from sqlalchemy.ext.declarative import declarative_base from sqlalchemy.orm import sessionmaker SQLALCHEMY_DATABASE_URL = "sqlite:///./test1.db" engine = create_engine( SQLALCHEMY_DATABASE_URL, connect_args={"check_same_thread": False} ) TestingSessionLocal = sessionmaker(autocommit=False, autoflush=False, bind=engine) Base = declarative_base()
然后我们修改models.py。如下
from config import EVENT if EVENT=="test": from models.testDatabase import Base,engine else: from models.database import Base,engine ....数据库设计 Base.metadata.create_all(bind=engine)
接下来我们去根据不同环境去连接不一样的数据库即可。
from models.database import * from models.testDatabase import TestingSessionLocal from config import EVENT def get_test_db(): db=TestingSessionLocal() try: yield db finally: db.close() def get_db_pro(): """ 每一个请求处理完毕后会关闭当前连接,不同的请求使用不同的连接 :return: """ db = SessionLocal() try: yield db finally: db.close() if EVENT =="test": get_db=get_test_db else: get_db=get_db_pro
最后在连接数据库的地方,我们把get_db替换成从
from get_db import get_db
因为我们去创建了不一样的数据库,根据不一样的环境去连接的。我们写一个测试方法,去测试下
def test_create_user(): client = TestClient(app) response = client.post( "/user/users/", json={"email": "test@example.com", "password": "leizi"}, ) assert response.status_code == 200 if __name__ == "__main__": test_create_user()
我们去执行下看下,
我们可以看到,执行完毕后数据落在了我们配置的测试环境的测试数据看中。
文章首发在公众号,欢迎关注。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· DeepSeek如何颠覆传统软件测试?测试工程师会被淘汰吗?
2020-10-25 一文带你趟过mac搭建appium测试环境的遇到的坑