域名 AXUM.RS 将于2025年10月到期。我们无意再对其进行续费,我们希望你能够接续这个域名,让更多 AXUM 开发者继续受益。
  • 方案1️⃣AXUM.RS 域名 = 3000
  • 方案2️⃣方案1️⃣ + 本站所有专题原始 Markdown 文档 = 5000
  • 方案3️⃣方案2️⃣ + 本站原始数据库 = 5500
如果你有意接续这份 AXUM 情怀,请与我们取得联系。
说明:
  1. 如果有人购买 AXUM.RS 域名(方案1️⃣),或者该域名到期,本站将启用新的免费域名继续提供服务。
  2. 如果有人购买了 AXUM.RS 域名,且同时购买了内容和/或数据库(方案2️⃣/方案3️⃣),本站将关闭。届时我们或许会以另一种方式与你再相遇。

为什么选择 sqlx 而不是 ORM?

本章我们先讨论一个问题:为什么选择 sqlx 而不是 ORM?

在 Rust 等强类型语言中,操作数据库最大的痛点当然是 Rust 语言的数据结构(比如:结构体、枚举等)与数据表字段的映射。

另一个痛点是,书写 SQL 语句。尤其是在数据表比较复杂或者更改数据表定义时,这个问题尤其突出。

真的需要 ORM 吗?

那么,真的需要 ORM 吗?不可否认,ORM 提供了高度抽象,让数据库操作变得犹如操作结构体等原生数据结构。但它的弊端也很突出:

  • 过度抽象:为了实现如操作结构体般操作数据库,ORM 进行了高度的抽象,甚至到了过度抽象的程度。虽然 Rust 语言的宏(在 Rust 中,ORM 基本都是通过宏来实现功能)提供了零成本抽象,但过度抽象给程序的调试,以及程序员对流程的把握带来了不少的挑战,更不用说优化 SQL 语句了。

  • 生成的 SQL 过于通用:

    • ORM 通常为多种数据库提供支持,这就意味着,它生成的 SQL 语句是通用的,很大机会用不到数据库引擎提供的优化功能
    • ORM 为了实现各场景通用,也只能生成通用的 SQL 语句
  • 某些 ORM 提供 RAW 的概念,允许用户书写原始 SQL 语句。为了弥补生成 SQL 过于通用或者适用某些需要优化 SQL 语句的场景,某些 ORM 允许用户书写原始 SQL 语句。我都手写 SQL 语句了,为什么还要用 ORM?

sqlx 能解决哪些痛点?

等下,你刚刚说,手写 SQL 语句尤其是在复杂表或修改表结构时,是一大痛点,你现在又在推 sqlx 不是自相矛盾?

借助 AI 编程助手,SQL 语句基本就告别手写了。

AI 编程助手及免费 AI API

免费 AI 编程助手

免费 AI 编程助手既有传统的根据上下文代码智能补全,也有比较新奇的通过 chat 直接生成整个项目的工具。

本人用的是 Codeium 做代码补全,偶尔会用 Cline 来做一些测试用的小项目,同时会使用 Cherry Studio 来做一些转换,比如将 SQL CREATE 语句转换成对应的 Rust 数据结构。

免费 AI API

要查看完整内容,请先登录