24个版本 (4个重大更改)
0.5.0 | 2024年8月7日 |
---|---|
0.5.0-alpha.2 | 2024年7月11日 |
0.5.0-alpha.1 | 2024年6月20日 |
0.3.2 | 2024年3月26日 |
0.1.0 | 2022年11月26日 |
49 在 数据库接口 中
9,037 每月下载量
在 17 个Crate 中使用 (15 个直接使用)
405KB
10K SLoC
libSQL API for Rust
此仓库包含libSQL API for Rust。
开发
有关更多信息,请参阅DEVELOPING.md。
许可证
本项目采用MIT许可证。
贡献
除非您明确声明,否则您提交给libSQL的任何有意贡献都应按MIT许可,不附加任何额外条款或条件。
lib.rs
:
libSQL API for Rust
libSQL是一个基于SQLite的可嵌入SQL数据库引擎。此Rust API是对SQLite C API的电池式包装,以支持透明复制,同时保持与SQLite生态系统(如SQL方言和扩展)的兼容性。如果您正在用Rust构建应用程序,这是您应该使用的crate。此Rust crate还有libSQL语言绑定,用于其他语言,如JavaScript、Python、Go和C。
入门
要开始,您首先需要创建一个Database
对象,然后打开一个Connection
到它,您可以使用它来查询
use libsql::Builder;
let db = Builder::new_local(":memory:").build().await.unwrap();
let conn = db.connect().unwrap();
conn.execute("CREATE TABLE IF NOT EXISTS users (email TEXT)", ()).await.unwrap();
conn.execute("INSERT INTO users (email) VALUES ('[email protected]')", ()).await.unwrap();
嵌入式副本
嵌入式副本是运行在您的应用程序进程中的libSQL数据库,它保留远程数据库的本地副本。如果您想要将数据移动到应用程序的内存空间以实现快速访问,它们非常有用。
您可以使用构造函数 Database::open_with_local_sync
打开一个只读的嵌入式副本。
use libsql::Builder;
use libsql::replication::Frames;
let mut db = Builder::new_local_replica("/tmp/test.db").build().await.unwrap();
let frames = Frames::Vec(vec![]);
db.sync_frames(frames).await.unwrap();
let conn = db.connect().unwrap();
conn.execute("SELECT * FROM users", ()).await.unwrap();
远程数据库
您还可以创建一个libsql连接,该连接不打开本地数据库,而是向远程数据库发送查询。
use libsql::Builder;
let db = Builder::new_remote("libsql://my-remote-db.com".to_string(), "my-auth-token".to_string()).build().await.unwrap();
let conn = db.connect().unwrap();
conn.execute("CREATE TABLE IF NOT EXISTS users (email TEXT)", ()).await.unwrap();
conn.execute("INSERT INTO users (email) VALUES ('[email protected]')", ()).await.unwrap();
WASM
由于WASM需要 !Send
支持以及 Database
类型支持异步操作并使用 async_trait
来抽象不同数据库类型,我们无法通过 Database
类型支持WASM。相反,我们在 wasm
模块中提供了更简单的并行类型,这些类型可以提供对WASM中我们的远程HTTP协议的访问。
示例
您可以在 examples
目录中找到更多示例。
功能标志
这个crate提供了一些功能标志,可以帮助您通过减少编译特定功能所需的依赖来提高编译时间。例如,如果您只想进行HTTP请求,则可能不需要编译libsql C代码。功能标志可以通过以下方式包含libsql crate:
libsql = { version = "*", default-features = false, features = ["core", "replication", "remote" ]
默认情况下,所有功能都是启用的,但通过提供 default-features = false
将移除这些默认设置。
功能描述如下
core
这包括支持基本本地数据库使用和嵌入式副本功能的核心C代码。replication
此功能标志包括core
功能标志,并添加了HTTP代码,允许您将远程数据库同步到本地。remote
此功能标志仅包括HTTP代码,允许您针对远程数据库运行查询。
依赖
~0.6–18MB
~254K SLoC