1 个不稳定版本
0.1.18 | 2024年4月26日 |
---|---|
0.1.17 |
|
0.1.9 |
|
#1321 在 数据库接口
96 每月下载量
用于 casbin-rxqlite-adapter
120KB
2.5K SLoC
SQLx rxqlite
Rust SQL 工具包 rxqlite 驱动
安装
您需要访问 rxqlite 节点。有关安装 rxqlite 的说明,请参阅 https://github.com/HaHa421/rxqlite
使用
一个简单的 Cargo 依赖项可能如下所示
[dependencies]
sqlx-rxqlite = { version = "0.1" }
sqlx = { version = "0.7" , default-features = false, features = ["macros", "runtime-tokio", "tls-none"] }
tokio = { version = "1", features = [ "full" ] }
假设一个 rxqlite 节点监听在 "127.0.0.1:21001",一个简单的应用程序将按以下方式进行
use futures_util::StreamExt;
use sqlx::prelude::*;
use sqlx_rxqlite::RXQLitePoolOptions;
//#[async_std::main] // Requires the `attributes` feature of `async-std`
#[tokio::main]
// or #[actix_web::main]
async fn main() -> Result<(), sqlx::Error> {
let pool = RXQLitePoolOptions::new()
//.max_connections(5)
.connect("rxqlite://127.0.0.1:21001")
.await?;
sqlx::query(
"CREATE TABLE IF NOT EXISTS _sqlx_rxqlite_test_user_ (
id INTEGER PRIMARY KEY,
name TEXT NOT NULL UNIQUE
)",
)
.execute(&pool)
.await?;
let mut row = sqlx::query("SELECT * FROM _sqlx_rxqlite_test_user_ WHERE name = ?")
.bind("JohnDoe")
.fetch_optional(&pool)
.await?;
if row.is_none() {
sqlx::query("INSERT INTO _sqlx_rxqlite_test_user_ (name) VALUES (?);")
.bind("JohnDoe")
.execute(&pool)
.await?;
row = sqlx::query("SELECT * FROM _sqlx_rxqlite_test_user_ WHERE name = 'JohnDoe'")
.fetch_optional(&pool)
.await?;
}
assert!(row.is_some());
sqlx::query(
"DROP TABLE _sqlx_rxqlite_test_user_",
)
.execute(&pool)
.await?;
Ok(())
}
安全
rxqlite 支持不安全的 TLS 连接(接受任何证书,包括自签名证书)。
许可证
许可方式为以下之一
- Apache 许可证 2.0 (LICENSE-APACHE 或 http://www.apache.org/licenses/LICENSE-2.0)
- MIT 许可证 (LICENSE-MIT 或 http://opensource.org/licenses/MIT)
任选其一。
贡献
除非您明确表示,否则您提交的任何贡献,根据 Apache-2.0 许可证的定义,都应按照上述许可方式,而不附加任何额外条款或条件。
依赖项
~19–33MB
~601K SLoC