Skip to main content

🐚 An async & dynamic ORM for Rust

SeaORM is a relational ORM to help you build web services in Rust
with the familiarity of dynamic languages.

Async

Relying on SQLx, SeaORM is a new library with async support from day 1.

Dynamic

Built upon SeaQuery, SeaORM allows you to build complex queries without 'fighting the ORM'.

Testable

Use mock connections to write unit tests for your logic.

Service Oriented

Quickly build services that join, filter, sort and paginate data in APIs.

Comparison with Diesel

DieselSeaORM
SyncAsync
StaticDynamic
Native DriverPure Rust
Relational
Schema first
MySQL / Postgres / SQLite

A quick taste of SeaORM

use sea_orm::entity::prelude::*;
#[derive(Clone, Debug, PartialEq, DeriveEntityModel)]
#[sea_orm(table_name = "cake")]
pub struct Model {
#[sea_orm(primary_key)]
pub id: i32,
pub name: String,
}
#[derive(Copy, Clone, Debug, EnumIter, DeriveRelation)]
pub enum Relation {
#[sea_orm(has_many = "super::fruit::Entity")]
Fruit,
}
impl Related<super::fruit::Entity> for Entity {
fn to() -> RelationDef {
Relation::Fruit.def()
}
}

Meet Terres, our official mascot

A friend of Ferris, Terres the hermit crab is a member of the Rustacean family.