基于FastAPI实现短链重定向(3) -SQLAlchemy创建表以及CURD操作

💡 原文中文,约5100字,阅读约需13分钟。
📝

内容提要

本文介绍了如何使用SQLAlchemy工具包来快速创建数据库表,并演示了用户信息和短链接信息的常见CURD操作。通过调用Base.metadata.create_all(engine, checkfirst=True)可以轻松创建数据表。在异步引擎环境下,可以使用async_engine.begin() as conn来创建表。用户信息的CURD操作包括获取用户、创建用户、更新用户和删除用户。短链接信息的CURD操作包括获取短链接、创建短链接、更新短链接和删除短链接。下一篇文章将介绍接口的定义和路由配置。

🔎

延伸解读

异步建表与启动事件集成

文章展示了在异步引擎下通过async_engine.begin()获取连接,并利用run_sync执行Base.metadata.drop_all和create_all来建表。同时将建表逻辑集成到FastAPI的startup事件中,确保服务启动时自动初始化数据库。需要注意的是,drop_all会删除已有表,生产环境应谨慎使用;此外,必须显式导入模型类,否则create_all无法发现表定义。

服务层封装与静态协程方法

UserServeries和ShortServeries类采用静态协程方法封装CRUD操作,每个方法都接收AsyncSession作为第一个参数,便于依赖注入和事务控制。这种设计将数据库操作与业务逻辑分离,提高了代码的可维护性。但文章未涉及异常处理和事务回滚,实际应用中需补充try-except和rollback逻辑,避免会话残留。

短链批量创建与单条操作对比

ShortServeries除了提供单条短链的增删改查,还实现了create_batch_short_url方法,支持通过add_all批量插入。批量操作能减少数据库交互次数,提升效率,但需注意传入的short_urls列表元素需符合SingleShortUrlCreate模式。与单条创建类似,批量操作也需commit提交,且未处理部分失败的情况,使用时需确保数据完整性。

❓

Q&A

如何使用SQLAlchemy创建数据库表?

可以通过调用Base.metadata.create_all(engine, checkfirst=True)来创建数据库表。

在异步环境下如何创建表?

在异步环境下,可以使用async_engine.begin()来创建表,并在会话中执行相关操作。

用户信息的CURD操作包括哪些?

用户信息的CURD操作包括获取用户、创建用户、更新用户和删除用户。

短链接信息的CURD操作有哪些?

短链接信息的CURD操作包括获取短链接、创建短链接、更新短链接和删除短链接。

UserServeries类的作用是什么?

UserServeries类统一管理user表的操作,定义了增、删、改、查等静态协程方法。

下一篇文章将介绍什么内容?

下一篇文章将介绍接口的定义和路由配置。

🏷️

标签

➡️

继续阅读