SeaORM简介
SeaORM 是一个关系型 ORM,用于帮助你像使用动态语言那样,在 Rust 中构建 Web 服务。实现所需的Trait以及创建并插入测试数据
在使用 SeaORM 之前,需要进行一些初始操作。本章我们将创建数据表、导入初始示例数据以及实现所需的 trait。最后,我们通过查询所有分类列表来验证这些操作是否正常运行。使用 SeaORM 查询数据
本章我们将讨论如何使用 SeaORM 进行查询:查询条件、分页、查询单条记录等。使用 SeaORM 插入数据
本章将讨论如何使用 SeaORM 添加记录。使用 SeaORM 修改数据
本章讨论使用 SeaORM 修改数据使用 SeaORM 删除数据
本章将讨论如何使用 SeaORM 实现删除。使用 SeaORM 操作一对多和多对一关系
正如其名,关系型数据库中的“关系”是很重要的部分。SeaORM 支持常见的数据关系,本章将讨论其中的一对多和多对一关系。SeaORM 的命令行工具和自动迁移
SeaORM 提供了一个命令行工具,可以快速生成实体。同时,还提供了自动迁移功能。SeaORM 操作多对多关系
本章将讨论多对多:一篇文章可以有多个标签,同样的,一个标签可以对应多篇文章。总结与作业
总结与作业
SeaORM 的命令行工具和自动迁移
- 258482
- 2022-05-31T17:53:19+08:00
SeaORM 提供了一个命令行工具,可以快速生成实体。同时,还提供了自动迁移功能。
sea-orm-cli
—— 实用的 SeaORM 命令行工具
cargo install sea-orm-cli
生成实体
参数 | 说明 |
---|---|
-u | 指定数据库连接字符串。 也可以设置环境变量 DATABASE_URL ,从而省略该参数 |
-o | 生成的实体输出到的目录 |
以下是使用环境变量的方式:
DATABASE_URL='postgres://axum_rs:[email protected]:5432/axum_rs' sea-orm-cli generate entity \
-o src/entity
关于输出目录
输出目录有很多选择,取决于你的项目结构。
- 如果你使用了
[workspace]
,则应将其输出到单独的子项目:-o entity/src
👉 别忘了在其它使用它的项目的Cargo.toml
加上它的依赖 - 如果你只是一个简单的项目,则应将其输出到当前项目的
src
目录下,作为一个模块使用:-o src/entity
👉 别忘了在src/main.rs
或src/lib.rs
加上pub mod entity;
数据迁移
初始化迁移目录
sea-orm-cli migrate init
将在当前目录下创建
./migration
子目录
运行数据迁移
sea-orm-cli migrate up
sea-orm-cli migrate <子命令>
子命令 | 说明 |
---|---|
init | 初始化 |
up | 运行所有已准备的迁移 |
up -n 10 | 运行10条已准备的迁移 |
down | 回滚最后的迁移 |
down -n 10 | 回滚最后10条迁移 |
status | 当前迁移状态 |
fresh | 删除数据库中所有表,然后运行所有迁移 |
refresh | 回滚所有已运行的迁移,然后重新运行所有迁移 |
reset | 回滚所有已运行的迁移 |
通过编程方式操作数据迁移
实现MigratorTrait,然后就可以通过编程方式操作了。