FastAPI

标签下的所有文章 85 篇文章

DDD分层设计与异步职责划分:让你的代码不再“异步”混乱

DDD分层架构将系统分为用户接口层、应用层、领域层和基础设施层,各层职责明确。领域层处理同步业务逻辑,基础设施层负责异步数据库操作,应用层协调两者。评论模块使用pydantic定义领域模型,保持业务逻辑完整性。Tortoise-ORM实现基础设施层的异步仓储操作。应用层整合领域逻辑与基础设施的异步调用,确保事务管理策略通过原子操作实现。分层调用规则强调领域对象不包含await调用,仓储接口定义在领 …
阅读更多

异步数据库事务锁:电商库存扣减的防超卖秘籍

FastAPI框架中使用Tortoise-ORM进行异步数据库操作时,处理电商库存扣减等需要数据一致性的场景,传统同步操作会导致竞态条件。Tortoise-ORM的异步解决方案需配合事务锁机制,包括悲观锁和乐观锁。悲观锁通过select_for_update()锁定记录,确保原子操作;乐观锁通过版本号机制实现无锁检测,采用指数退避重试策略避免活锁。高冲突率场景适合悲观锁,低冲突率场景适合乐观锁。
阅读更多

FastAPI中的复杂查询与原子更新指南

FastAPI 结合 Tortoise-ORM 实现复杂查询与原子更新。通过 Q 对象构建多条件查询,支持 AND、OR、NOT 逻辑运算符,动态组合查询条件。使用 F 表达式进行原子更新,避免竞态条件,确保数据一致性。示例包括订单状态与金额的复杂查询、库存扣减的原子操作,以及商品促销的价格更新。常见错误包括字段拼写错误、类型不匹配和空结果集,需通过模型检查和异常处理解决。
阅读更多

FastAPI与Tortoise-ORM模型配置及aerich迁移工具

FastAPI中使用Tortoise-ORM时,模型类通过继承tortoise.models.Model并定义class Meta来映射数据库字段。元数据配置包括表名、schema、表注释和联合唯一约束等。初始化数据库连接推荐使用lifespan事件处理,配置参数包括数据库URL、模型模块路径等。aerich迁移工具用于管理数据库迁移,通过init-dbmigrateupgrade等命令实现迁 …
阅读更多

异步IO与Tortoise-ORM的数据库

异步IO与同步IO的核心区别在于阻塞与非阻塞模式。Tortoise-ORM通过协议层、连接池层和ORM层实现异步数据库操作,支持高效的并发处理。用户管理系统搭建中,Tortoise-ORM与FastAPI结合,实现了用户创建和查询功能,并通过Pydantic进行数据校验。异步ORM适用于高并发场景,参数化查询可防止SQL注入。最佳实践包括连接池配置、查询优化和事务管理,确保系统性能和数据一致性。
阅读更多