Update README.md

This commit is contained in:
Ryan Leckey 2020-01-15 01:27:19 -08:00 committed by GitHub
parent daf7f6c556
commit 7d62d9a286
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -41,16 +41,63 @@
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
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.
* **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
#### 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 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");
```
#### Static
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).