设置 ORM 与 数据库

未匹配的标注

设置 ORM 和数据库

在我们栈的最底层是数据库。对于我们的 app ,我们准备使用 SQLite3 。

下载 SQLite3

我们需要 SQLite3 库,并且拥有 SQLite3 cli 很方便。在 Ubuntu 上,可以通过以下命令很轻易地下载:

$ sudo apt install sqlite3 libsqlite3-0 libsqlite3-dev

要在其他 Linux 发行版上进行安装,请查看对应发行版的文档。要在其它平台上安装,请参阅 sqlite.org

安装 Diesel

我们 可以 只对数据库进行原始查询,然后将数据临时整合为程序将要使用的类型,但是这是很复杂且很容易出错的。我们不喜欢杂乱无章且容易出错的事物 —— Rust 给我们带来的一个重大利好是在编译时验证某些方面正确性的方法。

Diesel 是 Rust 的一个 ORM ,它为我们提供了一种类型安全的方式来与数据库进行交互。它支持 SQLite3 , PostgreSQL 和 MySQL 。如果不想使用 SQLite3 ,请查看有关使用其它后端( backend )的文档指南。

修改 Cargo.toml 文件的 dependencies 块,使得文件看起来像下面这样:

[package]
name = "myblog"
version = "0.1.0"
authors = ["Your Name <you@example.com>"]
edition = "2018"

[dependencies]
diesel = { version = "1.0.0", features = ["sqlite"] }

现在,如果你 cargo run ,它应该会获取 Diesel (以及它所需要的一切),进行构建,并运行你的示例 。

安装 Diesel CLI

但它还不是我们所需要的 Diesel 的全部 。我们还可以使用一个 cli 来帮助管理项目。由于仅在开发过程中使用 cli ,在应用程序运行的时候不使用,所以我们可以将其安装到工作站( workstation )上,而不是写到我们的 Cargo.toml 中。通过如下命令完成。

$ cargo install diesel_cli --no-default-features --features sqlite

这样就安装了支持 SQLite3 的 diesel_cli —— 参阅 diesel help 中的子命令列表。如果想要该 cli 支持更多数据库系统,请阅读本章节后面的部分。

我们需要告诉 diesel_cli 我们的数据库文件名是什么。我们可以通过使用 DATABASE_URL 环境变量或将此变量设置在名为 .env 的文件中来实现。让我们尝试后一种办法:

$ echo 'DATABASE_URL=./testdb.sqlite3' > .env

现在我们就可以让 Diesel 为我们设置工作空间:

$ diesel setup

如果检查目录内容,就会看到一个名为 testdb.sqlite3 的文件。

安装 Diesel CLI 并添加 MySQL 和 PostgreSQL 支持

如果你想要或需要 diesel_cli 支持 MySQL 和 PostgreSQL ,除了先前安装的 SQLite3 软件包之外,首先还需要安装必须的开发库:

$ sudo apt install libpq-dev libmysqlclient-dev

然后通过以下命令安装 diesel_cli

$ cargo install diesel_cli

注意:如果已经安装了 diesel_cli, 可以通过附加 --forcecargo install 命令来覆盖现有的安装。

(译者注:以下为多余部分,我也不知为何会多,提交的原文本来没有的)
在我们栈的最底层是数据库。对于我们的 app ,我们准备使用 SQLite3 。

本文章首发在 LearnKu.com 网站上。

本译文仅用于学习和交流目的,转载请务必注明文章译者、出处、和本文链接
我们的翻译工作遵照 CC 协议,如果我们的工作有侵犯到您的权益,请及时联系我们。
上一篇 下一篇
贡献者:1
讨论数量: 0
发起讨论 只看当前版本


暂无话题~