On this page
Overview
SeaORM is a relational ORM for building Rust web services. It provides asynchronous queries, entities and relations, ActiveModel persistence, migrations, and raw SQL across MySQL, MariaDB, PostgreSQL, and SQLite.
Features and best fit
Based on official documentation; not hands-on tested · Content checked:
Key features
Model one-to-one, one-to-many, many-to-many, and self-referencing relations
SeaORM models relations at the Entity level. The 2.0 dense entity format can keep relation declarations with the model, and the CLI can generate entities from an existing database.
Sources: [2]
Load and persist nested object graphs with higher-level APIs
Smart Entity Loader chooses joins or data-loader queries based on relation shape to avoid N+1 patterns. ActiveModel builders can persist nested object graphs while SeaORM resolves dependency order.
Sources: [2]
Best fit
Fits REST, GraphQL, and gRPC backends that want one database abstraction
It suits Rust services that want filtering, pagination, nested queries, migrations, and raw SQL in one ORM. The repository includes integrations with Axum, Actix, GraphQL, Tonic, and other frameworks.
Sources: [2]
Before adoption
Regression-test relation and schema-sync behavior across 2.0 patch updates
Version 2.0.4 fixes linked-join alias and condition handling as well as MySQL schema-sync behavior. Applications using complex relations or entity-first schema sync should verify generated SQL and migration outcomes when upgrading.
Sources: [3]
Official sources
- [1]SeaQL/sea-orm — GitHub repository(2026-10-06)
- [2]SeaORM 2.0.4 — README(2026-10-06)
- [3]SeaORM 2.0.4 release(2026-10-06)
Supplemental curator note
SeaORM fits Rust backends that want a higher-level entity, relation, and migration layer on top of SQLx. Version 2.0 expands entity-first and nested-persistence workflows, so 1.x migrations should review generated entities and relation definitions carefully.
Try it in 3 steps
- 1
Clone the reviewed SeaORM release
Clone the reviewed SeaORM 2.0.4 tag. The quickstart requires Rust 1.85 or newer.
git clone --depth 1 --branch 2.0.4 https://github.com/SeaQL/sea-orm.git - 2
Enter the Quick Start project
Enter the official single-file quickstart. It uses an in-memory SQLite database, so no database server setup is required.
cd sea-orm/examples/quickstart - 3
Run the official Quick Start
Run the example covering entities, relations, schema sync, CRUD, and nested persistence.
cargo run
Growth
Growth trends · Last 30 days
9,914 Stars
Trend data is still being collected.
Built with
Categories and tags
Categories
GitHub data
GitHub dataView detailed GitHub data
GitHub Topics
- database
- hacktoberfest
- loco
- mariadb
- mysql
- orm
- postgres
- rust
- sql
- sqlite
- sqlx
- tokio
- Stars
- 9,914
- Forks
- 738
- Watchers
- 43
- Open issues
- 231
- Contributors
- 288
- Owner type
- Organization
- Primary language
- Rust
- License
- Apache-2.0
- Repository last updated
- Oct 5, 2026
Related information
Write a related articleShare a guide or use case for this OSS in Markdown. Articles are published after administrator approval.
Explore next
- goose11,544 Stars
4 shared tag(s) · 1 shared category(s)
run SQL and Go-function schema migrations from a CLI or library
Go - Turso Database24,632 Stars
3 shared tag(s) · 2 shared category(s) · Same language
run SQLite-compatible SQL on a Rust database engine with bindings for multiple languages
Rust - redis-rs4,258 Stars
3 shared tag(s) · 2 shared category(s) · Same language
connect Rust applications to Redis and Valkey with synchronous or asynchronous clients
Rust - sqlc18,348 Stars
3 shared tag(s) · 2 shared category(s)
keep SQL as the source of truth and generate type-safe data-access code
Go - sqlx17,743 Stars
3 shared tag(s) · 2 shared category(s)
extend database/sql with struct scanning and named queries without replacing its interfaces
Go - Entity Framework Core14,797 Stars
3 shared tag(s) · 2 shared category(s)
map .NET objects to databases with LINQ queries, change tracking, updates, schema migrations, and provider plugins
C#
Report incorrect information
Tell us if any listing information is incorrect or outdated.