sea-orm2
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等知名项目采用功能全面值得尝试。

相关新闻

统帅LTD-510WS9U1十字对开冰箱怎么样?502L超薄一级能效实测解读

统帅LTD-510WS9U1十字对开冰箱怎么样?502L超薄一级能效实测解读

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/17 18:33:37 阅读更多 →
Unity游戏开发实战:塔防与防撞连线游戏核心机制详解

Unity游戏开发实战:塔防与防撞连线游戏核心机制详解

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/18 8:36:51 阅读更多 →
2026电动车锂电池怎么选?从参数到保养的实用选购指南

2026电动车锂电池怎么选?从参数到保养的实用选购指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/2 16:28:21 阅读更多 →

最新新闻

从私钥到Web3入口:钱包技术演进与实现原理

从私钥到Web3入口:钱包技术演进与实现原理

1. 钱包到底是什么:先搞懂“币”其实不在钱包里很多刚接触区块链的朋友都会问我一个问题:我钱包里的币到底存在哪里?是不是像银行一样,有个中央服务器帮我记账?答案可能和直觉相反——你的币从来不在“钱包”里&#x…

2026/10/18 8:36:17 阅读更多 →
FastColoredTextBox中文修正版:彻底解决光标错位与样式渲染

FastColoredTextBox中文修正版:彻底解决光标错位与样式渲染

简介:FastColoredTextBox 是一款广受欢迎的开源高亮代码文本框控件,支持自定义显示模式,并默认内置 C#、HTML 等多种语言的高亮规则;原版在处理中文双字节字符时经常出现显示异常、光标位置偏移,多个 Style 同时使用时…

2026/10/18 8:36:17 阅读更多 →
用Flask自研研学预约系统:数据模型、支付回调与防超卖实战

用Flask自研研学预约系统:数据模型、支付回调与防超卖实战

1. 项目缘起:为什么我一头扎进了自研研学预约系统先说清楚我做的这套东西是什么:一个面向中小型营地/研学机构的在线课程预约系统,用Python的Flask框架从零搭起,涵盖了课程排期、名额管理、在线支付确认、后台订单管理这些核心环节…

2026/10/18 8:36:17 阅读更多 →
拆解开源Agent框架:插件化的核心机制、实战与避坑指南

拆解开源Agent框架:插件化的核心机制、实战与避坑指南

先把话说在前面:我拆的是最近热度很高的一个开源 Agent 框架,拆法比较粗暴,直接把源码拉下来,从入口一路跟到插件装载、工具调用、上下文组装、退出清理,一条线走完。拆完之后我对“插件化”这三个字的理解&#xff0c…

2026/10/18 8:36:17 阅读更多 →
Spring Event事件机制:从同步耦合到异步解耦的完整实践与避坑指南

Spring Event事件机制:从同步耦合到异步解耦的完整实践与避坑指南

简介:面向 Spring 开发者的 Event 事件机制示例工程,以可运行代码演示事件定义、发布、监听、顺序控制与异步处理等核心用法,适合正在系统学习 Spring 事件模型,或希望在业务模块间实现低耦合通信的读者。资源共 75 个文件&#x…

2026/10/18 8:36:17 阅读更多 →
阵列天线方向图对比:均匀阵、切比雪夫、泰勒与稀疏阵选型指南

阵列天线方向图对比:均匀阵、切比雪夫、泰勒与稀疏阵选型指南

简介:阵列天线方向图比较是阵列天线设计中的重要基础,单元个数、阵元间距与波长三者共同决定波束宽度、旁瓣电平与零点位置。这套MATLAB源码包面向无线通信、雷达与天线工程学习者,可帮助读者快速仿真不同参数组合下的方向图差异,…

2026/10/18 8:35:17 阅读更多 →

日新闻

基于GMM的语音识别系统原理与MATLAB实现详解

基于GMM的语音识别系统原理与MATLAB实现详解

说到基于高斯混合模型(GMM)的语音识别系统,很多人第一反应就是一堆数学公式,觉得门槛很高。但如果你真的在MATLAB里把它落地跑通,会发现核心其实就是三件事:把声音变成特征向量,用GMM给每个类别…

2026/10/18 0:00:55 阅读更多 →
数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理这四个字听起来挺唬人,但落到具体操作上,无非就是让计算机按你的想法“摆弄”像素。我在一个模拟项目X里用了一套特别经典的基础处理流程:对图像做反白、改调色板、彩色转灰度,最后把像素数据导出成txt文件。单看每一…

2026/10/18 0:00:55 阅读更多 →
机器人大脑技术盘点:具身智能的感知、决策与数据闭环

机器人大脑技术盘点:具身智能的感知、决策与数据闭环

如果你的信息流最近也天天刷到“机器人大脑”这个词,你会发现一个很有意思的现象:每个人说的“大脑”根本不是同一个东西。有人指的是大语言模型,有人指的是运动控制系统,还有人指的是能理解物理世界的端到端模型。在2026年这个时…

2026/10/18 0:00:55 阅读更多 →

周新闻

基于GMM的语音识别系统原理与MATLAB实现详解

基于GMM的语音识别系统原理与MATLAB实现详解

说到基于高斯混合模型(GMM)的语音识别系统,很多人第一反应就是一堆数学公式,觉得门槛很高。但如果你真的在MATLAB里把它落地跑通,会发现核心其实就是三件事:把声音变成特征向量,用GMM给每个类别…

2026/10/18 0:00:55 阅读更多 →
数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理这四个字听起来挺唬人,但落到具体操作上,无非就是让计算机按你的想法“摆弄”像素。我在一个模拟项目X里用了一套特别经典的基础处理流程:对图像做反白、改调色板、彩色转灰度,最后把像素数据导出成txt文件。单看每一…

2026/10/18 0:00:55 阅读更多 →
机器人大脑技术盘点:具身智能的感知、决策与数据闭环

机器人大脑技术盘点:具身智能的感知、决策与数据闭环

如果你的信息流最近也天天刷到“机器人大脑”这个词,你会发现一个很有意思的现象:每个人说的“大脑”根本不是同一个东西。有人指的是大语言模型,有人指的是运动控制系统,还有人指的是能理解物理世界的端到端模型。在2026年这个时…

2026/10/18 0:00:55 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/18 0:55:02 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/17 17:22:31 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/16 14:23:36 阅读更多 →