sqlalchemy - FastAPI 覆盖数据库连接
问题描述
我正在尝试使用 sqlalchemy 1.4(async) 和 FastAPI 实现多租户模式(每个用户都有自己的数据库)
据我了解,每次发生请求时,我都需要选择我的 DB_URL。
但是有一个问题,我该怎么做?我尝试使用上下文,但我的数据库连接始终是静态的
这是我得到的:
engine = create_async_engine('MY_DATABASE_URL', future=True, echo=False)
async_session = sessionmaker(engine, expire_on_commit=False, class_=AsyncSession)
Base = declarative_base()
我尝试使用带有绑定参数的 sessionmaker 来覆盖引擎,但它不起作用
try:
async_session = sessionmaker(bind=create_async_engine(context['db']), expire_on_commit=False, class_=AsyncSession)
except:
async_session = sessionmaker(engine, expire_on_commit=False, class_=AsyncSession)
async with async_session() as session:
async with session.begin():
book_dal = BookDAL(session)
all_book = await book_dal.get_all_books()
return [i for i in all_book]
即使我实现了 MiddlleWare,我也无法更改我的引擎。任何建议都非常受欢迎。
解决方案
推荐阅读
- css - Flexbox 项目:图像周围的边框有很多空白空间,而不是完全围绕图像
- javascript - 无法提交消息:路径不是合法形式
- javascript - 每个元素的输入数字对象
- azure - 如何使用 Azure Rest API 在 azure 门户中的诊断设置列表下获取资源的诊断状态?状态如下:启用/禁用
- python - 布尔索引与维度 0 上的索引数组不匹配;维度为 2,但对应的布尔维度为 18
- rabbitmq - 如何查询rabbitmq_exporter
- websocket - 如何在 WebSocket 中代理到多个服务器
- flutter - 允许小部件溢出
- java - SmsManager 在发送每条短信之间有延迟
- image - 上传后在编辑器中插入图片