mirror of
https://github.com/launchbadge/sqlx
synced 2024-11-12 23:37:13 +00:00
Update README.md
This commit is contained in:
parent
daf7f6c556
commit
7d62d9a286
1 changed files with 51 additions and 2 deletions
53
README.md
53
README.md
|
@ -41,16 +41,63 @@
|
||||||
|
|
||||||
SQLx is a modern SQL client built from the ground up for Rust, in Rust.
|
SQLx is a modern SQL client built from the ground up for Rust, in Rust.
|
||||||
|
|
||||||
* **Truly Asynchronous**. Built from the ground-up using [async-std] using async streams for maximum concurrency.
|
* **Truly Asynchronous**. Built from the ground-up using async/await for maximum concurrency.
|
||||||
|
|
||||||
* **Type-safe SQL** (if you want it) without DSLs. Use the `query!()` macro to check your SQL and bind parameters at
|
* **Type-safe SQL** (if you want it) without DSLs. Use the `query!()` macro to check your SQL and bind parameters at
|
||||||
compile time. (You can still use dynamic SQL queries if you like.)
|
compile time. (You can still use dynamic SQL queries if you like.)
|
||||||
|
|
||||||
* **Pure Rust**. The Postgres and MySQL/MariaDB drivers are written in pure Rust using **zero** unsafe code.
|
* **Pure Rust**. The Postgres and MySQL/MariaDB drivers are written in pure Rust using **zero** unsafe code.
|
||||||
|
|
||||||
|
* **Runtime Agnostic**. Works on [async-std](https://crates.io/crates/async-std) or [tokio](https://crates.io/crates/tokio) with the `runtime-async-std` or `runtime-tokio` cargo feature flag.
|
||||||
|
|
||||||
|
## Install
|
||||||
|
|
||||||
|
**async-std**
|
||||||
|
|
||||||
|
```toml
|
||||||
|
# Cargo.toml
|
||||||
|
[dependencies]
|
||||||
|
sqlx = "0.2"
|
||||||
|
```
|
||||||
|
|
||||||
|
**tokio**
|
||||||
|
|
||||||
|
```toml
|
||||||
|
# Cargo.toml
|
||||||
|
[dependencies]
|
||||||
|
sqlx = { version = "0.2", no-default-features = true, features = [ "runtime-tokio", "macros" ] }
|
||||||
|
```
|
||||||
|
|
||||||
|
#### Cargo Feature Flags
|
||||||
|
|
||||||
|
* `runtime-async-std` (on by default): Use the `async-std` runtime.
|
||||||
|
|
||||||
|
* `runtime-tokio`: Use the `tokio` runtime. Mutually exclusive with the `runtime-async-std` feature.
|
||||||
|
|
||||||
|
* `postgres`: Add support for the Postgres database server.
|
||||||
|
|
||||||
|
* `mysql`: Add support for the MySQL (and MariaDB) database server.
|
||||||
|
|
||||||
|
* `uuid`: Add support for UUID (in Postgres).
|
||||||
|
|
||||||
|
* `chrono`: Add support for date and time types from `chrono`.
|
||||||
|
|
||||||
|
* `tls`: Add support for TLS connections.
|
||||||
|
|
||||||
[async-std]: https://github.com/async-rs/async-std
|
|
||||||
## Examples
|
## Examples
|
||||||
|
|
||||||
|
#### Connect
|
||||||
|
|
||||||
|
It is a very good idea to always create a connection pool at the beginning of your application
|
||||||
|
and then share that.
|
||||||
|
|
||||||
|
```rust
|
||||||
|
# Postgres
|
||||||
|
let pool = sqlx::PgPool::new("postgres://localhost/database").await?;
|
||||||
|
```
|
||||||
|
|
||||||
|
#### Dynamic
|
||||||
|
|
||||||
The `sqlx::query` function provides general-purpose prepared statement execution.
|
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.
|
The result is an implementation of the `Row` trait. Values can be efficiently accessed by index or name.
|
||||||
|
|
||||||
|
@ -63,6 +110,8 @@ let row = sqlx::query("SELECT is_active FROM users WHERE id = ?")
|
||||||
let is_active: bool = row.get("is_active");
|
let is_active: bool = row.get("is_active");
|
||||||
```
|
```
|
||||||
|
|
||||||
|
#### Static
|
||||||
|
|
||||||
The `sqlx::query!` macro prepares the SQL query and interprets the result in order to constrain input types and
|
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 anonymous struct (or named tuple).
|
infer output types. The result of `query!` is an anonymous struct (or named tuple).
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue