一文看懂流行的Rust ORM

文章讨论了在Rust编程语言中使用ORM(对象关系映射)的好处,特别是Diesel和SeaORM两个库。Diesel以其编译时安全和丰富的特性著称,而SeaORM则注重直观的API设计。两者都提供数据库操作的抽象,简化了与SQL的交互。开发者可以根据项目需求和偏好选择适合的ORM。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

对象关系映射(ORM)是一种通过抽象数据库交互的底层细节来简化应用程序中数据访问和操作的技术。ORM使您能够使用首选编程语言来处理对象和类型,同时与关系数据库管理系统(RDBMS)无缝集成。

如果您不精通SQL(结构化查询语言)或数据库管理,ORM的框架设计对用户友好。ORM提供了一个高级抽象层,让您可以使用熟悉的面向对象编程概念与数据库进行交互,从而大大简化了应用程序数据库集成。

Rust、SQL数据库和ORM

在Rust中构建应用程序时,可能需要某种形式的持久性。您可以从Rust生态系统中的许多数据库范式和库中进行选择。

假设您希望使用关系数据库,您可以选择使用SQL客户端通过程序中的原始SQL查询在数据库管理系统上运行SQL操作,或者使用ORM允许您使用的Rust内置类型来处理数据库。

Rust应用程序中使用ORM有几个好处。ORM让用户不需要手动编写复杂的、容易出错的查询。相反,您可以利用ORM框架的强大功能,通过简单直观的API进行日常数据库操作,比如插入、更新和查询数据。使用ORM,您可以编写在多个数据库管理系统上工作的Rust程序,不必重写数据库管理系统特有的SQL查询。

与其他语言不同,Rust没有广泛采用的ORM。然而,Rust生态系统中有许多ORM用于各种目的,并支持多种数据库,包括Diesel、SQLx、Sled和SeaORM等。

Diesel ORM

Diesel是一个Rust ORM,提供了全面的特性,使开发人员能够高效地使用多个受支持的SQL数据库。

Diesel提供了强类型和编译时间安全特性、富有表现力的查询API、自动模式迁移、事务和错误处理等特性。

由于其性能、效率、安全性和可靠性,以及社区积极地对项目做贡献,Diesel是首选的ORM。此外,Diesel兼容Rocket等其他Rust Web框架。

Diesel为数据库操作提供了crate(库)和CLI工具。

您可以运行该命令为首选数据库安装diesel_cli工具(在本例中是sqlite数据库,将参数更改为首选的支持diesel的SQL数据库的名称)。

css
复制代码
cargo install diesel_cli --no-default-features --features sqlite

此外,您可以将Diesel添加到项目的依赖项部分,以便在项目中使用该crate。

ini
复制代码
[dependencies]
diesel = { version = "1.4.5", features = ["sqlite"] }

下面介绍如何在Rust文件中为项目的数据库操作导入Diesel。

复制

rust
复制代码
use diesel::prelude::*;

这把diesel::prelude模块中的所有类型和特性导入当前作用域。这样一来就很容易使用Diesel的特性,不需要显式导入每个类型或特性。

总的来说,Diesel是一个非常适合您数据库项目的ORM和数据库工具,因为它有一个充满活力的社区、大量在线教程以及对库的大力支持。

SeaORM ORM

SeaORM是面向Rust的关系型ORM,可以帮助构建Web服务。SeaORM拥有大量的特性和功能,旨在简化处理数据库的过程,包括强大的查询构建、模式定义和迁移、关系映射、事务和连接池,并借助Rust的async/await语法支持异步操作。

值得注意的是,SeaORM的API旨在符合人体工程学、富有表现力,允许您编写清晰简洁的数据库查询和操作。SeaORM直观的语法和深思熟虑的抽象尽量减少了样板代码,并提高了生产力。

SeaORM为数据库操作提供了CLI工具和crate。

下面是安装sea- form –cli CLI工具的命令:

复制代码
cargo install sea-orm-cli

您可以使用migrate init命令来编写一个迁移文件,以设置数据库和模式。

csharp
复制代码
sea- form -cli migrate init

将sea-orm crate添加到项目Cargo.toml文件的依赖项部分,以安装和使用SeaORM。

ini
复制代码
[dependencies]
sea-orm = { version = "0.9" }

在安装了SeaORM之后,您可以用use语句将库导入到Rust文件中,如下所示:

rust
复制代码
use sea_orm::entity::prelude::*;

use sea_orm::entity::prelude:😗;语句将sea_orm::entity::prelude模块中的所有类型和特性导入到当前作用域,以允许您使用这些类型和特性,而不必使用sea_orm::entity::prelude前缀来限定它们的名称。

SeaORM是一个出色的ORM,拥有充满活力的社区,还有出色的描述性文档来帮助您入门。

SeaORM vs Diesel

为Rust项目选择合适的ORM需要仔细考虑各种因素。

SeaORM和Diesel都提供了出色的性能,充分利用Rust的优势来优化数据库交互。SeaORM侧重于简单性和直观的API设计,而Diesel注重编译时检查和安全性。

下面的表格比较了两种ORM的特性和功能:

在Diesel和SeaORM之间进行选择取决于您的项目规格。Diesel已建立了社区支持,并因其强大的特性和性能而受到青睐。如果您注重编译时检查、安全性和简单性,那么Diesel很合适。

另一方面,SeaORM是新颖的,在不断扩展,它支持更多的SQL数据库引擎和懒加载。如果您注重直观的API设计和生产力,SeaORM可能更合适。

这两种ORM都支持查询、模式迁移和编译时检查。在做出决定之前,请考虑您在使用的数据库管理系统和项目的大小。

Diesel让处理数据库轻而易举

Rust的开源社区继续在增强现有及新兴软件包和ORM的成熟度和功能方面取得重大进展。

据称,Diesel是Rust生态系统中最流行的ORM之一。Diesel的广泛采用证明了其强大的功能、高效的性能和积极的社区支持。Diesel开发团队致力于完善和扩展其功能,以确保它仍然是Rust开发人员眼里一款可靠、稳健的ORM解决方案。

这里给大家分享一份Python全套学习资料,包括学习路线、软件、源码、视频、面试题等等,都是我自己学习时整理的,希望可以对正在学习或者想要学习Python的朋友有帮助!

CSDN大礼包:全网最全《全套Python学习资料》免费分享🎁

😝有需要的小伙伴,可以点击下方链接免费领取或者V扫描下方二维码免费领取🆓

👉CSDN大礼包🎁:全网最全《Python学习资料》免费分享(安全链接,放心点击)👈

1️⃣零基础入门

① 学习路线

对于从来没有接触过Python的同学,我们帮你准备了详细的学习成长路线图。可以说是最科学最系统的学习路线,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。
在这里插入图片描述

② 路线对应学习视频

还有很多适合0基础入门的学习视频,有了这些视频,轻轻松松上手Python~在这里插入图片描述

③练习题

每节视频课后,都有对应的练习题哦,可以检验学习成果哈哈!
在这里插入图片描述
因篇幅有限,仅展示部分资料

2️⃣国内外Python书籍、文档

① 文档和书籍资料

在这里插入图片描述

3️⃣Python工具包+项目源码合集

①Python工具包

学习Python常用的开发软件都在这里了!每个都有详细的安装教程,保证你可以安装成功哦!
在这里插入图片描述

②Python实战案例

光学理论是没用的,要学会跟着一起敲代码,动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。100+实战案例源码等你来拿!
在这里插入图片描述

③Python小游戏源码

如果觉得上面的实战案例有点枯燥,可以试试自己用Python编写小游戏,让你的学习过程中增添一点趣味!
在这里插入图片描述

4️⃣Python面试题

我们学会了Python之后,有了技能就可以出去找工作啦!下面这些面试题是都来自阿里、腾讯、字节等一线互联网大厂,并且有阿里大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。
在这里插入图片描述
在这里插入图片描述

5️⃣Python兼职渠道

而且学会Python以后,还可以在各大兼职平台接单赚钱,各种兼职渠道+兼职注意事项+如何和客户沟通,我都整理成文档了。
在这里插入图片描述
在这里插入图片描述
上述所有资料 ⚡️ ,朋友们如果有需要 📦《全套Python学习资料》的,可以扫描下方二维码免费领取 🆓
😝有需要的小伙伴,可以点击下方链接免费领取或者V扫描下方二维码免费领取🆓

👉CSDN大礼包🎁:全网最全《Python学习资料》免费分享(安全链接,放心点击)👈

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值