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()
我们去执行下看下,

我们可以看到,执行完毕后数据落在了我们配置的测试环境的测试数据看中。
文章首发在公众号,欢迎关注。

FastAPI 学习之路(五十三)根据环境不同连接不同数据库的更多相关文章
- FastAPI 学习之路(十三)Cookie 参数,Header参数
系列文章: FastAPI 学习之路(一)fastapi--高性能web开发框架 FastAPI 学习之路(二) FastAPI 学习之路(三) FastAPI 学习之路(四) FastAPI 学习之 ...
- FastAPI 学习之路(十五)响应状态码
系列文章: FastAPI 学习之路(一)fastapi--高性能web开发框架 FastAPI 学习之路(二) FastAPI 学习之路(三) FastAPI 学习之路(四) FastAPI 学习之 ...
- FastAPI 学习之路(二十)接口文档配置相关
系列文章: FastAPI 学习之路(一)fastapi--高性能web开发框架 FastAPI 学习之路(二) FastAPI 学习之路(三) FastAPI 学习之路(四) FastAPI 学习之 ...
- FastAPI 学习之路(十四)响应模型
系列文章: FastAPI 学习之路(一)fastapi--高性能web开发框架 FastAPI 学习之路(二) FastAPI 学习之路(三) FastAPI 学习之路(四) FastAPI 学习之 ...
- FastAPI 学习之路(十六)Form表单
系列文章: FastAPI 学习之路(一)fastapi--高性能web开发框架 FastAPI 学习之路(二) FastAPI 学习之路(三) FastAPI 学习之路(四) FastAPI 学习之 ...
- FastAPI 学习之路(十七)上传文件
系列文章: FastAPI 学习之路(一)fastapi--高性能web开发框架 FastAPI 学习之路(二) FastAPI 学习之路(三) FastAPI 学习之路(四) FastAPI 学习之 ...
- FastAPI 学习之路(十八)表单与文件
系列文章: FastAPI 学习之路(一)fastapi--高性能web开发框架 FastAPI 学习之路(二) FastAPI 学习之路(三) FastAPI 学习之路(四) FastAPI 学习之 ...
- FastAPI 学习之路(十九)处理错误
系列文章: FastAPI 学习之路(一)fastapi--高性能web开发框架 FastAPI 学习之路(二) FastAPI 学习之路(三) FastAPI 学习之路(四) FastAPI 学习之 ...
- FastAPI 学习之路(五十五)操作Redis
之前我们分享了操作关系型数据库,具体文章, FastAPI 学习之路(三十二)创建数据库 FastAPI 学习之路(三十三)操作数据库 FastAPI 学习之路(三十四)数据库多表操作 这次我们分享的 ...
- FastAPI 学习之路(五)
系列文章: FastAPI 学习之路(一)fastapi--高性能web开发框架 FastAPI 学习之路(二) FastAPI 学习之路(三) FastAPI 学习之路(四) 我们之前的文章分享了 ...
随机推荐
- 【SpringCloud技术专题】「Eureka源码分析」从源码层面让你认识Eureka工作流程和运作机制(上)
前言介绍 了解到了SpringCloud,大家都应该知道注册中心,而对于我们从过去到现在,SpringCloud中用的最多的注册中心就是Eureka了,所以深入Eureka的原理和源码,接下来我们要进 ...
- JS003. 事件监听和监听滚动条的三种参数( addEventListener( ) )
全局 1 window.addEventListener('scroll', () => { 2 console.log('------') 3 console.log(document.doc ...
- python库--flashtext--大规模数据清洗利器
flashtext.keyword (flashtext) 类/方法 返回值 参数 说明 .KeywordProcessor() 对象kp case_sensitive=False 是否区分大小写 添 ...
- RSTP
一.STP协议的缺点,存在的问题 STP 协议工作时间收敛慢,响应时间长---------->RSTP 原始的802.1d(stp)不支持多个vlan---->(PVST===>把一 ...
- Wpf UserControl使用 KeyBinding,失效问题
我的问题根源是UserControl未获取相应焦点,在UserControl后台添加如下 public AccountDetailView() { Initia ...
- 第十一章 Net 5.0 快速开发框架 YC.Boilerplate --图数据库模块Neo4j
在线文档:http://doc.yc-l.com/#/README 在线演示地址:http://yc.yc-l.com/#/login 源码github:https://github.com/linb ...
- 【redis前传】集思广益之quicklist,取其精华去其糟粕
前言 在之前我们已经学习了redis五大数据结构中的list结构.其内部是linkedList和zipList两种结构.这是我们已经学习的内容.之前我没有结合操作具体查看.事实上在两者中还存在一种结合 ...
- Node.js躬行记(11)——E2E测试
Cypress是为现代网络构建的前端测试工具,解决了开发人员和 QA 工程师在测试应用程序时面临的关键痛点. 在这个测试框架中包含了E2E测试.集成测试和单元测试(内嵌了Mocha),我们需要的是它的 ...
- P3760-[TJOI2017]异或和【树状数组】
正题 题目链接:https://www.luogu.com.cn/problem/P3760 题目大意 给出\(n\)个数字的一个序列\(a\),求它所有区间和的异或和 \(n\leq 10^5,\s ...
- Anaconda和canda简介及区别
Anaconda简介: 1.是一个开源的Python发行版本,其包含了conda.Python等软件包,numpy,pandas(数据分析),scipy等科学计算包,而无需再单独下载配置. 可以在同一 ...