43个版本 (15个重大更改)
新 0.16.2 | 2024年8月24日 |
---|---|
0.15.0 | 2024年8月1日 |
0.14.2 | 2024年7月17日 |
0.7.3 | 2024年3月25日 |
#94 in 数据库接口
每月3,178次下载
用于 4 个Crates(直接3个)
565KB
15K SLoC
PostgreSQL嵌入式
在Linux、MacOS或Windows上本地安装并运行PostgreSQL数据库。PostgreSQL可以与应用程序捆绑,或按需下载。
这个库提供了类似于SQLite的嵌入式PostgreSQL体验。这是通过在运行时下载和安装PostgreSQL来实现的。还有一个“捆绑”功能,当启用时,将在编译时下载PostgreSQL安装存档,将其包含在二进制文件中,并在运行时从二进制版本安装。在两种情况下,PostgreSQL将在单独的进程空间中运行。
特性
- 安装和运行PostgreSQL
- 在临时端口上运行PostgreSQL
- 异步和阻塞API
- 在可执行文件中捆绑PostgreSQL存档
- 动态版本解析
- 配置PostgreSQL启动选项的能力
- 基于URL的配置
- 选择native-tls与rustls
示例
异步API
use postgresql_embedded::{PostgreSQL, Result};
#[tokio::main]
async fn main() -> Result<()> {
let mut postgresql = PostgreSQL::default();
postgresql.setup().await?;
postgresql.start().await?;
let database_name = "test";
postgresql.create_database(database_name).await?;
postgresql.database_exists(database_name).await?;
postgresql.drop_database(database_name).await?;
postgresql.stop().await
}
同步API
use postgresql_embedded::Result;
use postgresql_embedded::blocking::PostgreSQL;
fn main() -> Result<()> {
let mut postgresql = PostgreSQL::default();
postgresql.setup()?;
postgresql.start()?;
let database_name = "test";
postgresql.create_database(database_name)?;
postgresql.database_exists(database_name)?;
postgresql.drop_database(database_name)?;
postgresql.stop()
}
信息
在构建过程中,当启用“捆绑”功能时,PostgreSQL二进制文件将被下载并包含在生成的二进制文件中。PostgreSQL二进制文件的版本由环境变量POSTGRESQL_VERSION
确定。如果未设置环境变量POSTGRESQL_VERSION
,则将使用postgresql_archive::LATEST
来确定要下载的PostgreSQL二进制文件的版本。
在构建或运行时下载theseus PostgreSQL二进制文件时,可以将环境变量GITHUB_TOKEN
设置为GitHub个人访问令牌,以增加下载PostgreSQL二进制文件的速率限制。环境变量GITHUB_TOKEN
不是必需的。
在运行时,PostgreSQL二进制文件默认缓存在以下目录中
- Unix:
$HOME/.theseus/postgresql
- Windows:
%USERPROFILE%\.theseus\postgresql
通过使用特定版本的 PostgreSQL 二进制文件(例如 =16.4.0
)可以提升性能。首次下载后,PostgreSQL 二进制文件将被缓存并用于后续运行。此外,将不再查询仓库以计算版本匹配。
功能标志
postgresql_embedded 使用功能标志来处理编译时间和二进制文件大小。
以下功能可用
名称 | 描述 | 默认值? |
---|---|---|
bundled |
将 PostgreSQL 存档打包到生成的二进制文件中 | 否 |
blocking |
启用阻塞 API;需要 tokio |
否 |
native-tls |
启用 native-tls 支持 | 是 |
rustls-tls |
启用 rustls-tls 支持 | 否 |
theseus |
启用 theseus PostgreSQL 二进制文件 | 是 |
tokio |
启用使用 tokio 进行异步操作 | 否 |
zonky |
启用 zonky PostgreSQL 二进制文件 | 否 |
安全性
此crate使用#![forbid(unsafe_code)]
来确保所有内容都在 100% 安全的 Rust 中实现。
许可
许可协议为以下之一
- Apache 许可证 2.0 版(LICENSE-APACHE 或 https://www.apache.org/licenses/LICENSE-2.0)
- MIT 许可证(LICENSE-MIT 或 https://opensource.org/licenses/MIT)
任选其一。
注释
默认情况下使用 theseus-rs/postgresql-binaries 中的 PostgreSQL 二进制文件。
贡献
除非您明确声明,否则任何有意提交以包含在您的工作中的贡献(根据 Apache-2.0 许可证定义),均将按上述方式双许可,无任何附加条款或条件。
依赖关系
~27–44MB
~738K SLoC