mirror of
https://github.com/launchbadge/sqlx.git
synced 2026-04-16 17:34:33 +00:00
Update README.md
This commit is contained in:
34
README.md
34
README.md
@@ -25,6 +25,8 @@
|
||||
</a>
|
||||
</div>
|
||||
|
||||
<br />
|
||||
|
||||
<div align="center">
|
||||
<sub>Built with ❤️ by <a href="https://launchbadge.com">The LaunchBadge team</a>
|
||||
</div>
|
||||
@@ -36,9 +38,37 @@ SQLx is a modern SQL client built from the ground up for Rust, in Rust.
|
||||
* **Asynchronous**.
|
||||
|
||||
* **Native**. SQLx is a pure Rust toolkit for SQL. Where possible, drivers are written from scratch, in Rust, utilizing the modern ecosystem for asynchronous network services development.
|
||||
|
||||
|
||||
* **Type-safe**. SQLx is built upon the novel idea of preparing SQL statements before or duing compilation to provide strong type safety while not getting in your way with a custom DSL.
|
||||
|
||||
|
||||
## Examples
|
||||
|
||||
The `sqlx::query` function provides general-purpose prepared statement execution.
|
||||
The result is an implementation of the `Row` trait. Values can be efficiently accessed by index or name.
|
||||
|
||||
```rust
|
||||
let row = sqlx::query("SELECT is_active FROM users WHERE id = ?")
|
||||
.bind(some_user_id)
|
||||
.fetch_one(&mut conn)
|
||||
.await?;
|
||||
|
||||
let is_active: bool = row.get("is_active");
|
||||
```
|
||||
|
||||
The `sqlx::query!` macro prepares the SQL query and interprets the result in order to constrain input types and
|
||||
infer output types. The result of `query!` is an anoymous struct (or named tuple).
|
||||
|
||||
```rust
|
||||
let countries = sqlx::query!(
|
||||
"SELECT country, COUNT(*) FROM users GROUP BY country WHERE organization = ?",
|
||||
organization
|
||||
)
|
||||
.fetch(&mut conn) // -> impl Stream<Item = { country: String, count: i64 }>
|
||||
.map_ok(|rec| (rec.country, rec.count))
|
||||
.collect::<HashMap<_>>() // -> HashMap<String, i64>
|
||||
.await?;
|
||||
```
|
||||
|
||||
## Safety
|
||||
|
||||
This crate uses `#[deny(unsafe_code)]` to ensure everything is implemented in 100% Safe Rust.
|
||||
|
||||
Reference in New Issue
Block a user