数据库概述 #

数据库库选择 #

Actix Web 可以与多种 Rust 数据库库配合使用:

类型 特点 适用场景
SQLx 异步查询 编译时检查、原生异步 高性能应用
Diesel ORM 类型安全、功能丰富 传统 ORM 需求
SeaORM 异步 ORM 现代化 API、易用 快速开发

SQLx #

特点 #

  • 编译时 SQL 检查
  • 原生异步支持
  • 轻量级,无 ORM 开销
  • 支持多种数据库

基本用法 #

rust
use sqlx::postgres::PgPoolOptions;

let pool = PgPoolOptions::new()
    .max_connections(5)
    .connect("postgres://user:pass@localhost/db")
    .await?;

let users = sqlx::query!("SELECT * FROM users")
    .fetch_all(&pool)
    .await?;

优缺点 #

优点 缺点
编译时检查 需要数据库连接编译
高性能 无 ORM 功能
异步原生 学习曲线较陡

Diesel #

特点 #

  • 成熟的 ORM 框架
  • 类型安全查询
  • 迁移管理
  • 支持多种数据库

基本用法 #

rust
use diesel::prelude::*;

let connection = PgConnection::establish("postgres://user:pass@localhost/db")?;

let users = users::table
    .filter(users::active.eq(true))
    .load::<User>(&connection)?;

优缺点 #

优点 缺点
功能丰富 同步 API
类型安全 编译复杂
迁移工具 学习成本高

SeaORM #

特点 #

  • 异步 ORM
  • 现代化 API
  • 动态查询
  • 支持多种数据库

基本用法 #

rust
use sea_orm::*;

let db = Database::connect("postgres://user:pass@localhost/db").await?;

let users = Users::find()
    .filter(users::Column::Active.eq(true))
    .all(&db)
    .await?;

优缺点 #

优点 缺点
异步原生 相对较新
易于使用 社区较小
动态查询 性能略低

选择建议 #

选择 SQLx 如果 #

  • 需要最高性能
  • 熟悉 SQL
  • 需要编译时检查
  • 项目简单

选择 Diesel 如果 #

  • 需要成熟 ORM
  • 团队熟悉 ORM
  • 需要迁移管理
  • 同步 API 可接受

选择 SeaORM 如果 #

  • 需要异步 ORM
  • 快速开发
  • 现代化 API
  • 动态查询需求

数据库支持 #

数据库 SQLx Diesel SeaORM
PostgreSQL
MySQL
SQLite
MSSQL

下一步 #

根据你的需求选择合适的数据库库:

最后更新:2026-03-29