SeaORM 是一个用 Rust 编写的异步、动态的对象关系映射ORM库旨在让你能以符合直觉的方式操作数据库同时享受 Rust 带来的性能与安全优势。它建立在 SeaQuery 这个查询构建器之上并遵循“Active Record”活动记录模式如果你熟悉其他语言的 ORM会感到非常亲切。它的核心设计是“分层抽象”你可以在最上层使用直观的实体 API 进行 CRUD 操作也可以在需要时向下深入到 SeaQuery 层编写更复杂的 SQL 逻辑。 快速上手1. 添加依赖在你的Cargo.toml中需要根据选择的数据库和异步运行时来配置 featurestoml[dependencies] sea-orm { version 2.0.0, features [ sqlx-postgres, # 数据库驱动可选 sqlx-mysql, sqlx-sqlite 等 runtime-tokio-rustls, # 异步运行时可选 runtime-tokio-native-tls macros, # 过程宏用于派生实体 with-chrono, # 支持 chrono 时间库 ] }数据库驱动你必须从sqlx-mysql、sqlx-postgres、sqlx-sqlite等中选择一个或几个。异步运行时通常与你的 Web 框架如 Axum, Actix保持一致选择runtime-tokio-rustls或runtime-tokio-native-tls。2. 生成实体 (Entity)SeaORM 采用“实体优先”的工作流。你可以通过命令行工具sea-orm-cli连接数据库自动为每个表生成对应的实体代码。shell# 安装 CLI 工具 cargo install sea-orm-cli^2.0 # 在项目根目录创建 .env 文件设置 DATABASE_URL # DATABASE_URLpostgres://user:passlocalhost/db # 生成实体文件到 src/entities 目录 sea-orm-cli generate entity -o src/entities生成的实体文件会定义表结构、列和关系你可以在此基础上进行自定义。3. 核心概念Model 与 ActiveModelModel代表从数据库读取的一行数据是不可变的 Rust 结构体。ActiveModel用于写入操作插入、更新、删除。它为每个字段附加了状态可以追踪哪些字段被修改了从而避免竞态条件。4. 执行 CRUD 操作下面的示例演示了如何创建、查询和保存数据基于 SeaORM 2.0 的写法rustuse sea_orm::*; use entities::user; // 建立数据库连接 let db Database::connect(postgres://user:passlocalhost/db).await?; // 插入创建一个 ActiveModel 并 insert let new_user user::ActiveModel { name: Set(Bob.to_owned()), email: Set(bobexample.com.to_owned()), ..Default::default() }; let bob new_user.insert(db).await?; // 查询使用 Entity 的 find 方法 let user user::Entity::find() .filter(user::Column::Name.eq(Bob)) .one(db) .await?; if let Some(user) user { // 更新将 Model 转换为 ActiveModel修改字段后保存 let mut active_user: user::ActiveModel user.into(); active_user.email Set(new_emailexample.com.to_owned()); active_user.update(db).await?; }5. SeaORM 2.0 新特性SeaORM 在 2026年7月发布了 2.0 稳定版带来了多项改进新实体格式关系可以直接作为类型化的字段定义在Model中代码更紧凑。嵌套 ActiveModel可以构建一个包含关联数据的嵌套对象一次性调用saveSeaORM 会自动处理外键顺序并在一个事务中完成所有插入和更新。强类型列列通过COLUMN常量访问其方法对类型更敏感能在编译期发现类型不匹配的错误。同步支持提供了非异步的 API方便在嵌入式或阻塞上下文中使用。 生态工具SeaORM 背后有一个完整的生态SeaORM Pro一个基于 React GraphQL 的专业管理后台可以免费使用。Seaography可以快速从你的实体生成 GraphQL API。SeaQuery底层的 SQL 查询构建器可以独立使用。 谁在使用 SeaORM许多知名的开源项目都在使用 SeaORM例如高性能代码编辑器Zed、可观测性平台OpenObserve、流处理平台RisingWave等。SeaORM 是 Rust 生态中一个非常活跃的 ORM 选择如果你正在寻找一个功能全面、文档完善且社区活跃的数据库工具它值得一试。think我们只需要根据内容生成一个不超过150字的摘要。摘要要概括SeaORM是什么、主要特点、快速上手、新特性、生态和用户。注意字数限制。/thinkSeaORM是Rust编写的异步ORM库基于SeaQuery遵循ActiveRecord模式提供分层抽象支持直观CRUD和复杂SQL。通过CLI生成实体使用Model与ActiveModel操作数据库。2.0版新增关系字段、嵌套ActiveModel、强类型列及同步API并有SeaORM Pro、Seaography等生态工具。被Zed、OpenObserve等知名项目采用功能全面值得尝试。