这是 SQLx 与 PostgreSQL 17 的开发指南,主要面向使用 Rust 访问 PostgreSQL 的开发者,核心价值在于把查询与类型安全、事务处理和迁移管理整合到一处。
主要能力包括:使用 query_as!、query_scalar!、query! 编写编译期校验的类型安全查询;通过 fetch_one、fetch_optional、fetch_all、fetch、execute 等获取方法处理单行、可选行、多行、流式结果与仅执行语句;用迁移语句创建 PostgreSQL ENUM 类型,并在 Rust 侧用 sqlx::Type 映射,查询时以 role as "role: UserRole" 形式做类型转换;以 Json<T> 处理 JSONB 的读写;用 pool.begin() 开启事务,在事务内以 &mut *tx 执行语句,commit 提交,出错时事务丢弃并自动回滚。
还演示了分页(LIMIT/OFFSET,限制每页数量)、使用 UNNEST 的批量插入、ON CONFLICT DO UPDATE 的 UPSERT,以及 QueryBuilder 构建动态查询。命令方面使用 sqlx migrate add、sqlx migrate run、sqlx migrate revert 管理迁移。
限制与注意事项:编译期校验依赖 DATABASE_URL 环境变量;离线模式可用 cargo sqlx prepare 生成 .sqlx 目录;可空列需用 Option<T>;普通查询传入 &pool,事务内传入 &mut *tx。资料未提供安装、版本兼容、性能与收费等信息。