SuperAPI AI 工具集

sqlx

数据与分析

查看项目

更新于 10-16 00:24

技能介绍

用途:sqlx 是 Rust 的异步 SQL 工具包,支持 PostgreSQL、MySQL、SQLite,直接写原生 SQL,不用 DSL,并可在编译期对真实数据库校验查询。本技能为使用 sqlx 构建方案提供指南。

主要能力:模块覆盖 postgres、mysql、sqlite、any(无编译期检查)、query_builder(运行时动态查询)、migrate(迁移)、types(Json<T>、Text<T>)。编译期宏 query!、query_as!、query_scalar! 会校验 SQL 语法、参数类型与返回列类型;运行时函数 query、query_as、query_scalar 无需编译期数据库。支持 fetch_one、fetch_optional、fetch_all、fetch 流式获取;连接池配置(max_connections、acquire_timeout 等);事务(手动、闭包、嵌套 SAVEPOINT);FromRow 派生与 rename、flatten、skip;JSON 列;QueryBuilder 动态查询;迁移 CLI 与 migrate! 宏;#[sqlx::test] 隔离测试库。

使用方式:Cargo.toml 需至少包含一个数据库驱动与运行时 feature(如 runtime-tokio、tls-rustls、postgres),否则连接池运行时会 panic。编译期宏要求编译时设置 DATABASE_URL,可写入 .env,或用 SQLX_OFFLINE=true 配合 cargo sqlx prepare 的离线元数据。占位符因库而异:PostgreSQL 用 $1、$2,MySQL/SQLite 用 ?。事务上执行查询需用 &mut *tx。迁移命令:sqlx migrate add、run、revert、info。

适用场景:Rust 中编写类型安全的 SQL 查询、连接池管理、事务与迁移、数据库测试。

限制:any 驱动不支持编译期检查;MySQL 不支持 RETURNING;SQLite 布尔值以 INTEGER 存储;查询多时编译较慢;未提供具体收费、价格或平台信息。