3 个不稳定版本
0.1.1 | 2021 年 9 月 22 日 |
---|---|
0.1.0 | 2021 年 9 月 15 日 |
0.0.1 | 2021 年 9 月 6 日 |
#2913 在 数据库接口
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
中;将该文件提交到版本控制,并不再需要活动数据库连接来构建您的项目。
除非在项目中启用了 sqlx
的 offline
功能,否则不会有任何效果。如果没有启用该功能,很可能是您收到了一个看起来像这样的 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