Repolode
transact-rs

transact-rs/sqlx

纯 Rust 的异步 SQL 工具库,可在编译期校验直接书写的 SQL,支持 PostgreSQL、MySQL/MariaDB 和 SQLite。

Star
17,587
Fork
1,750
未关闭 Issue
785
最近提交
4小时前

这是什么?

SQLx 是一个异步访问 SQL 数据库的 Rust 库。它不提供查询构建器或 DSL,而是直接书写普通 SQL 字符串,由查询宏在编译期连接开发数据库进行校验,语法和类型错误可以在程序运行前发现。它明确定位为非 ORM,行到结构体的映射通过派生宏或 `query_as` 完成。

该库内置连接池、行流式读取、预处理语句缓存、支持保存点的嵌套事务,并在 PostgreSQL 上支持 LISTEN/NOTIFY。Postgres 和 MySQL/MariaDB 驱动使用纯 Rust 实现且不含 unsafe 代码,SQLite 驱动则封装了 C 语言的 SQLite 库。它兼容 tokio 与 async-std 运行时,并可选 native-tls 或 rustls 作为 TLS 后端。

此外,`Any` 驱动允许应用根据连接 URL 的协议在运行时选择数据库后端。

核心功能

  • 01通过查询宏在编译期校验 SQL,无需查询构建器 DSL。
  • 02异步 API,内置连接池和行流式读取。
  • 03支持 PostgreSQL、MySQL/MariaDB 和 SQLite。
  • 04每个连接自动缓存预处理语句。
  • 05支持带保存点的嵌套事务。
  • 06PostgreSQL 支持 LISTEN/NOTIFY 异步通知。
  • 07可搭配 tokio 或 async-std 运行时,以及 native-tls 或 rustls。

适用场景

  • 构建以 PostgreSQL 或 MySQL 为后端的异步 Rust Web 服务。
  • 编写手工优化的 SQL,同时在构建时发现与数据库结构不一致的问题。
  • 在 Rust 应用中以异步方式嵌入 SQLite。
  • 开发与具体数据库无关的工具,运行时根据 URL 选择驱动。

快速上手

  1. 1

    在 Cargo.toml 中添加 sqlx,并选择运行时特性(runtime-tokio 或 runtime-async-std),可选再添加 TLS 特性

  2. 2

    在 sqlx 的 features 列表中启用所需的数据库驱动(postgres、mysql 或 sqlite)

  3. 3

    使用 PgPoolOptions(或对应的连接池类型)创建连接池,并按快速入门示例执行查询

使用前须知

  • SQLite 驱动依赖 C 语言的 libsqlite3 库并使用 unsafe 代码,因此并非纯 Rust 实现。
  • 编译期检查的查询宏需要构建时可访问开发数据库,除非使用离线模式。
  • MSSQL 驱动在 0.7 版本之后已被移除,目前不受支持。

标签

常见问题

sqlx 是什么?
纯 Rust 的异步 SQL 工具库,可在编译期校验直接书写的 SQL,支持 PostgreSQL、MySQL/MariaDB 和 SQLite。 SQLx 是一个异步访问 SQL 数据库的 Rust 库。它不提供查询构建器或 DSL,而是直接书写普通 SQL 字符串,由查询宏在编译期连接开发数据库进行校验,语法和类型错误可以在程序运行前发现。它明确定位为非 ORM,行到结构体的映射通过派生宏或 `query_as` 完成。
sqlx 可以免费使用吗?用的什么许可证?
sqlx 以 Apache-2.0 许可证开源。用于商业产品前,请先确认许可证条款。
sqlx 还在维护吗?
活跃维护中。sqlx 最近一次提交是在 2026年10月21日。
sqlx 适合用来做什么?
构建以 PostgreSQL 或 MySQL 为后端的异步 Rust Web 服务。 编写手工优化的 SQL,同时在构建时发现与数据库结构不一致的问题。 在 Rust 应用中以异步方式嵌入 SQLite。 开发与具体数据库无关的工具,运行时根据 URL 选择驱动。
sqlx 怎么安装和运行?
在 Cargo.toml 中添加 sqlx,并选择运行时特性(runtime-tokio 或 runtime-async-std),可选再添加 TLS 特性 在 sqlx 的 features 列表中启用所需的数据库驱动(postgres、mysql 或 sqlite) 使用 PgPoolOptions(或对应的连接池类型)创建连接池,并按快速入门示例执行查询
在哪里获取 sqlx?
源代码和安装说明在 GitHub 上:https://github.com/transact-rs/sqlx

概要由 AI 根据项目 README 生成;GitHub 数据每日更新。

相关项目