3 个不稳定版本

0.1.1 2021 年 9 月 22 日
0.1.0 2021 年 9 月 15 日
0.0.1 2021 年 9 月 6 日

#2913数据库接口

MIT/Apache

44KB
963 行代码(不包括注释)

SQLx Models CLI

SQLx 的关联命令行工具,用于管理数据库、迁移以及启用“离线”模式(使用 sqlx::query!() 和其他相关功能)。

安装

使用 Rust 工具链

# supports all databases supported by SQLx
$ cargo install sqlx-models-cli

# only for postgres
$ cargo install sqlx-modles-cli --no-default-features --features postgres

用法

所有命令都需要提供一个数据库 URL。这可以通过使用 --database-url 命令行选项或在环境变量中设置 DATABASE_URL 来完成,也可以在当前工作目录的 .env 文件中设置。

有关更多详细信息,请运行 sqlx <command> --help

# Postgres
DATABASE_URL=postgres://postgres@localhost/my_database

DATABASE_URL 创建/删除数据库

$ sqlx database create
$ sqlx database drop

生成自动化迁移

您可以使用以下命令自动生成迁移

$ sqlx migrate generate

您还可以使用快捷方式

$ sqlx mig gen

这将使用 sqlx-models 包为您的应用程序中的每个模型生成一个 SQL 表。

创建和运行迁移

$ sqlx migrate add <name>

migrations/<timestamp>_<name>.sql 中创建一个新的文件。将您的数据库模式更改添加到这个新文件中。


$ sqlx migrate run

将运行数据库的迁移历史与 migrations/ 文件夹进行比较,并运行任何尚未执行的脚本。

使用 query!() 启用“离线模式”构建

注意:必须以 cargo sqlx 的形式运行。

cargo sqlx prepare

将查询元数据保存到当前目录的 sqlx-data.json 中;将该文件提交到版本控制,并不再需要活动数据库连接来构建您的项目。

除非在项目中启用了 sqlxoffline 功能,否则不会有任何效果。如果没有启用该功能,很可能是您收到了一个看起来像这样的 sqlx-data.json 文件。

{
    "database": "PostgreSQL"
}

cargo sqlx prepare --check

如果 sqlx-data.json 中的数据与当前数据库模式和项目中的查询不符,则退出时状态值非零。适用于持续集成。

强制以离线模式构建

为了确保意外存在的 DATABASE_URL 环境变量或 .env 文件不会导致 cargo build(尝试)访问数据库,您可以设置 SQLX_OFFLINE 环境变量为 true

如果您想将其设置为默认值,只需将其添加到您的 .env 文件中。 cargo sqlx prepare 仍然会正确执行并连接到数据库。

依赖项

~19–40MB
~614K SLoC