Diesel for Rust: 完整指南与示例

面向初学者的在线Python训练器

轻松学习Python,无需理论负担。在浏览器中直接解决带自动检查的实践任务,无需安装任何东西。

开始课程

什么是 Diesel 以及为什么需要它?



Diesel 是一个强大、安全且可扩展的 ORM(对象关系映射)库,适用于 Rust 编程语言。它提供了一种类型安全的方式与关系型数据库(如 PostgreSQL、MySQL 和 SQLite)进行交互。与许多其他 ORM 不同,Diesel 在运行时不使用魔法或反射。相反,它在编译阶段生成所有必要的代码,从而确保您的查询是正确的,并且不会在运行时导致错误。



使用 Diesel 的主要原因:

  • 类型安全: SQL 查询中的错误(例如,列名不正确或类型不匹配)在编译阶段就能被发现,而不是在生产环境中。
  • 性能: Diesel 生成高度优化的代码,其运行效率与手写 SQL 查询相当。
  • 可扩展性: 您可以轻松添加对新数据类型、运算符和函数的支持。
  • 迁移: 内置的迁移系统允许您像管理代码一样管理数据库模式。
  • 安全性: Diesel 自动转义查询参数,防止 SQL 注入。


Diesel 非常适合那些重视可靠性、性能和数据安全性的项目。它广泛应用于 Web 应用程序、API 服务、数据处理工具以及任何需要与数据库交互的 Rust 项目。



安装 Diesel



安装 Diesel 包括两个部分:将库添加到项目以及安装用于处理迁移的 CLI 工具。



1. 添加到 Cargo.toml

打开您项目的 Cargo.toml 文件并添加依赖项。选择相应的数据库后端(或多个):



[dependencies]diesel = { version = "2.1", features = ["postgres"] }  # 用于 PostgreSQL# diesel = { version = "2.1", features = ["mysql"] }   # 用于 MySQL# diesel = { version = "2.1", features = ["sqlite"] }  # 用于 SQLite


2. 安装 CLI(命令行界面)

CLI 工具 diesel_cli 用于创建和执行迁移。通过 cargo 安装它:



# 用于 PostgreSQLcargo install diesel_cli --no-default-features --features postgres

# 用于 MySQLcargo install diesel_cli --no-default-features --features mysql

# 用于 SQLitecargo install diesel_cli --no-default-features --features sqlite

# 用于所有后端cargo install diesel_cli


3. 配置连接

在项目根目录创建一个 .env 文件来存储连接字符串:



DATABASE_URL=postgres://username:password@localhost/diesel_demo


然后在您的项目中初始化 Diesel:



diesel setup


此命令将创建 diesel.toml 文件、migrations 文件夹,并尝试创建数据库(如果它不存在)。



快速入门与代码示例



让我们创建一个简单的用户管理应用程序。



1. 创建迁移

创建一个 users 表:



diesel migration generate create_users


编辑迁移文件:



up.sql:

CREATE TABLE users (    id SERIAL PRIMARY KEY,    name VARCHAR NOT NULL,    email VARCHAR NOT NULL UNIQUE,    age INTEGER NOT NULL DEFAULT 0,    created_at TIMESTAMP NOT NULL DEFAULT NOW());


down.sql:

DROP TABLE users;


应用迁移:



推荐