Skip to main content

🐚 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

SeaORMDiesel
AsyncSync
DynamicStatic
Pure RustNative Driver
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()
}
}

Who's using SeaORM?


The following products are powered by SeaORM:

A lightweight web security auditing toolkit

A Bitcoin lightning node implementation

The enterprise ready webhooks service


For more projects, see Built with SeaORM.

Meet Terres, our official mascot

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