@coder-rust-sqlx-queries
<skill_overview> 编写安全、经过验证且高效的 SQLx 查询 使用 SQLx 编写 SQL 查询 使用编译时查询宏 优化数据库访问模式 使用事务 SQLx GitHub </skill_overview> <query_rules> 使用查询!或 query_as!用于编译时验证 始终绑定参数,从不连接用户输入 适当地使用 fetch_one、fetch_Optional、fetch_all let rec = sqlx::query!("SELECT id FROM users WHERE email = $1", email) .fetch_Optional(&pool) .await?; </query_rules> <compile_time_checks> 确保 DATABASE_URL 在构建时可用 使用 sqlxprepare 和 SQLX_OFFLINE 进行离线构建 </compile_time_checks> 将多步更改包装在事务中 将 &mut 事务传递给查询调用 let mut tx = pool.begin().await?; sqlx::query!("从 id = $1 的项目中删除", id) .execute(&mut tx) .await?; tx.commit().await?;批量查询而不是循环查询 对于大型结果集更喜欢流式获取 <anti_patterns> 从不通过字符串连接构建 SQL 不要为每个请求创建新池 避免在循环内运行查询 </anti_patterns>
<skill_overview> 编写安全、经过验证且高效的 SQLx 查询 使用 SQLx 编写 SQL 查询 使用编译时查询宏 优化数据库访问模式 使用事务 SQLx GitHub </skill_overview> <query_rules> 使用查询!或 query_as!用于编译时验证 始终绑定参数,从不连接用户输入 适当地使用 fetch_one、fetch_Optional、fetch_all let rec = sqlx::query!("SELECT id FROM users WHERE email = $1", email) .fetch_Optional(&pool) .await?; </query_rules> <compile_time_checks> 确保 DATABASE_URL 在构建时可用 使用 sqlxprepare 和 SQLX_OFFLINE 进行离线构建 </compile_time_checks> 将多步更改包装在事务中 将 &mut 事务传递给查询调用 let mut tx = pool.begin().await?; sqlx::query!("从 id = $1 的项目中删除", id) .execute(&mut tx) .await?; tx.commit().await?;批量查询而不是循环查询 对于大型结果集更喜欢流式获取 <anti_patterns> 从不通过字符串连接构建 SQL 不要为每个请求创建新池 避免在循环内运行查询 </anti_patterns>