24.rust数据库使用:sea-orm详解

一、前言

只要开发稍微大型一点的项目,数据库都是离不开的。

rust目前并没有特别成熟的数据库框架,sea-orm这个框架是我目前所看到的成熟度最高的一个,并且仍在积极开发中。

所以本文将以sea-orm框架为基础来了解rust中数据库的基本使用。

二、项目管理

sea-orm管理数据库是通过迁移文件完成的,所以想要正常使用sea-orm框架,我们必须得对整个项目进行规划,使用方法便是工作空间。

首先下载sea-orm的命令行工具:

cargo install sea-orm-cli

这个命令行工具可以帮助我们迁移数据库、以及生成表实例等等。

然后在该工作空间内,分别执行命令:

sea-orm-cli migrate init
cargo new entity --lib
cargo new app

这三个命令用于在本工作空间内创建项目,也就是crate,其中前两个最好不要动,至于第三个命令,你可以随意修改它的名字,它是你实际写代码业务逻辑的地方。

此时我们整个工作空间看起来大致像下面这样:

image.png

注意使用sea-orm-cli生成的crate,它的名字需要我们手动添加到工作空间成员中去,至于其它两个,会自动添加。

至此我们就完成了整个项目的搭建,各个crate的作用如下:

  • migration:用于管理迁移文件的crate,说白了就是这个crate可以让我们通过代码创建数据库的表,只要迁移文件在,即使你数据库被删了,也能快速恢复过来(仅限表结构,不含数据)。
  • entity:用于包含所有表所对应的实体结构,你可以将其看作是数据库到代码的一个映射关系,以后你任何想要对数据库的表的增删改查操作,都要通过这个crate进行,并且这个crate中的代码后续是通过sea-orm-cli工具自动根据数据库生成的,你无需自行维护。
  • app:你实际的项目业务逻辑代码,当你想要操作数据库中的表时,引入entity这个crate即可。

三、迁移文件

为了方便起见,这里使用sqlite3数据库作为演示,它无需我们去安装其它任何东西。

但无论如何,迁移文件本身是数据库无关的,所以我们先来看迁移crate为我们自动生成的代码:

作者:余识
全部文章:0
会员文章:0
总阅读量:0
c/c++pythonrustJavaScriptwindowslinux