下载diesel:cargo install cargo-edit
安装包管理工具,cargo add **diesel**
添加依赖,featrues
为postgres
(如果使用chrono的时间类型还要添加chrono)
下载命令行工具:cargo install diesel_cli --no-default-features --features postgres
(禁用默认特性,仅启用 PostgreSQL 支持)
brew install libpq
下载数据库客户端,并按brew的提示添加环境变量创建或修改.env
文件,将连接字符串DATABASE_URL
写入
使用diesel setup
初始化,这将完成:
.env
文件中的 DATABASE_URL
migrations
目录并应用任何现有迁移使用diesel migration generate migration-first
生成一个新的迁移,这将在migrations
目录中创建一个新的子目录,包含 up.sql
和 down.sql
文件
自行修改sql文件(每次迁移都要手动编辑sql文件)
运行diesel migration run
进行迁移
使用diesel print-schema > src/db/schema.rs
将数据库的真实结构映射成schema
diesel.toml
并指定:[print_schema] file = "src/db/schema.rs"
,再运行diesel print-schema
schema.rs
是自动生成的,不应手动修改,在每次迁移之后,会自动更新 schema.rs
models.rs
通过Diesel 的宏(如 #[derive(Queryable, Insertable)]
)将结构体与 schema.rs
中的表对应起来如果有枚举类型,可以使用diesel-derive-enum
包中的DbEnum
派生宏
在 Diesel 里,表 和 列 是两个不同的东西,在使用 use schema::xxx::dsl::*;
时,会得到一个和表同名的标识符,这才是真正可以调用 .filter(...)
、.select(...)
等方法的「表查询构造器」,列 是表中的字段,如 id
,它们只能在 .filter(...)
, .select(...)
等方法里作为条件或选择字段使用,而不是调用者