NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
crates.io · #2960 most downloaded on crates.io
Command line utility for SeaORM
Last release 11 days ago
27 Sep 2026
Ships fairly regularly
a new release about every 2 weeks
Nearly every release is documented
notes for 55 of the last 60 stable releases
5 versions withdrawn
withdrawn after publishing
5 years old
140 releases · first in 2021
One column per quarter.
Update ActiveModel by JSON by @billy1624 in https://github.com/SeaQL/sea-orm/pull/492
time crate by @billy1624 https://github.com/SeaQL/sea-orm/pull/602delete_by_id @ShouvikGhosh2048 https://github.com/SeaQL/sea-orm/pull/590PaginatorTrait for SelectorRaw @shinbunbun https://github.com/SeaQL/sea-orm/pull/617Send bound to QueryStream and TransactionStream by @sebpuetz https://github.com/SeaQL/sea-orm/pull/471Send to StreamTrait by @nappa85 https://github.com/SeaQL/sea-orm/pull/622sea as an alternative bin name to sea-orm-cli by @ZhangHanDong https://github.com/SeaQL/sea-orm/pull/558mock from default features by @billy1624 https://github.com/SeaQL/sea-orm/pull/562create_table_from_entity will no longer create index for MySQL, please use the new method create_index_from_entityDatabaseConnection Clone with the default features enabled https://github.com/SeaQL/sea-orm/issues/438Clone by default https://github.com/SeaQL/sea-orm/issues/517.into_json() on queries https://github.com/SeaQL/sea-orm/issues/530#[sea_orm(indexed)] only works for MySQL https://github.com/SeaQL/sea-orm/issues/554sea-orm-cli generate --with-serde does not work on Postgresql custom type https://github.com/SeaQL/sea-orm/issues/581sea-orm-cli generate --expanded-format panic when postgres table contains enum type https://github.com/SeaQL/sea-orm/issues/614.into_json() on queries https://github.com/SeaQL/sea-orm/issues/619Full Changelog: https://github.com/SeaQL/sea-orm/compare/0.6.0...0.7.0
Migration Support by @billy1624 in https://github.com/SeaQL/sea-orm/pull/335
DateTime<Utc> & DateTime<Local> by @billy1624 in https://github.com/SeaQL/sea-orm/pull/489max_lifetime connection option by @billy1624 in https://github.com/SeaQL/sea-orm/pull/493column_name proc_macro attribute by @billy1624 in https://github.com/SeaQL/sea-orm/pull/433r# prefix when deriving FromQueryResult by @smrtrfszm in https://github.com/SeaQL/sea-orm/pull/494DateTime<Utc> & DateTime<Local> https://github.com/SeaQL/sea-orm/issues/381column_name proc_macro attribute if column name isn't in snake case https://github.com/SeaQL/sea-orm/issues/395Full Changelog: https://github.com/SeaQL/sea-orm/compare/0.5.0...0.6.0
Why insert, update, etc return an ActiveModel instead of Model? https://github.com/SeaQL/sea-orm/issues/289
ActiveValue https://github.com/SeaQL/sea-orm/issues/321Model by @billy1624 in https://github.com/SeaQL/sea-orm/pull/339ActiveValue by @billy1624 in https://github.com/SeaQL/sea-orm/pull/340ModelTrait::delete by @billy1624 in https://github.com/SeaQL/sea-orm/pull/396sea-strum lib back to strum by @billy1624 in https://github.com/SeaQL/sea-orm/pull/361ActiveModel::insert and ActiveModel::update return Model instead of ActiveModelActiveModelBehavior::after_save takes Model as input instead of ActiveModelsea_orm::unchanged_active_value_not_intended_for_public_use to sea_orm::UnchangedActiveValue::unset to ActiveValue::not_setActiveValue::is_unset to ActiveValue::is_not_setPartialEq of ActiveValue will also check the equality of state instead of just checking the equality of valueFull Changelog: https://github.com/SeaQL/sea-orm/compare/0.4.2...0.5.0
Nothing published for this version
Delete::many() doesn't work when schema_name is defined https://github.com/SeaQL/sea-orm/issues/362
Delete::many() with TableRef by @billy1624 in https://github.com/SeaQL/sea-orm/pull/363Is it possible to have 4 values Composite Key? https://github.com/SeaQL/sea-orm/issues/352
DateTime<FixedOffset>. by @kev0960 in https://github.com/SeaQL/sea-orm/pull/331axum_example fail to compile by @billy1624 in https://github.com/SeaQL/sea-orm/pull/355Disable SQLx query logging https://github.com/SeaQL/sea-orm/issues/290
sea-orm-cli cannot pass clippy https://github.com/SeaQL/sea-orm/issues/296DateTimeWithTimeZone does not implement Serialize and Deserialize https://github.com/SeaQL/sea-orm/issues/319PaginatorTrait and CountTrait for more constraints by @YoshieraHuang in https://github.com/SeaQL/sea-orm/pull/306PaginatorTrait by @billy1624 in https://github.com/SeaQL/sea-orm/pull/307Schema by @billy1624 in https://github.com/SeaQL/sea-orm/pull/309ouroboros missing docs warnings by @billy1624 in https://github.com/SeaQL/sea-orm/pull/288with-json feature requires chrono/serde by @billy1624 in https://github.com/SeaQL/sea-orm/pull/320entity.table_ref() instead of just entity. by @josh-codes in https://github.com/SeaQL/sea-orm/pull/318ActiveEnum by @billy1624 in https://github.com/SeaQL/sea-orm/pull/324paginate() & count() utilities into PaginatorTrait. You can use the paginator as usual but you might need to import PaginatorTrait manually when upgrading from the previous version.use futures::TryStreamExt;
use sea_orm::{entity::*, query::*, tests_cfg::cake};
let mut cake_stream = cake::Entity::find()
.order_by_asc(cake::Column::Id)
.paginate(db, 50)
.into_stream();
while let Some(cakes) = cake_stream.try_next().await? {
// Do something on cakes: Vec<cake::Model>
}
Schema converting EntityTrait into different sea-query statements now has to be initialized with DbBackend.use sea_orm::{tests_cfg::*, DbBackend, Schema};
use sea_orm::sea_query::TableCreateStatement;
// 0.3.x
let _: TableCreateStatement = Schema::create_table_from_entity(cake::Entity);
// 0.4.x
let schema: Schema = Schema::new(DbBackend::MySql);
let _: TableCreateStatement = schema.create_table_from_entity(cake::Entity);
ActiveModel against PostgreSQL, RETURNING clause will be used to perform select in a single SQL statement.// For PostgreSQL
cake::ActiveModel {
name: Set("Apple Pie".to_owned()),
..Default::default()
}
.insert(&postgres_db)
.await?;
assert_eq!(
postgres_db.into_transaction_log(),
vec![Transaction::from_sql_and_values(
DbBackend::Postgres,
r#"INSERT INTO "cake" ("name") VALUES ($1) RETURNING "id", "name""#,
vec!["Apple Pie".into()]
)]);
// For MySQL & SQLite
cake::ActiveModel {
name: Set("Apple Pie".to_owned()),
..Default::default()
}
.insert(&other_db)
.await?;
assert_eq!(
other_db.into_transaction_log(),
vec![
Transaction::from_sql_and_values(
DbBackend::MySql,
r#"INSERT INTO `cake` (`name`) VALUES (?)"#,
vec!["Apple Pie".into()]
),
Transaction::from_sql_and_values(
DbBackend::MySql,
r#"SELECT `cake`.`id`, `cake`.`name` FROM `cake` WHERE `cake`.`id` = ? LIMIT ?"#,
vec![15.into(), 1u64.into()]
)]);
Full Changelog: https://github.com/SeaQL/sea-orm/compare/0.3.2...0.4.0
Support for BYTEA Postgres primary keys https://github.com/SeaQL/sea-orm/issues/286
Vec<u8> primary key by @billy1624 in https://github.com/SeaQL/sea-orm/pull/287(We are changing our Changelog format from now on)
(We are changing our Changelog format from now on)
is_null and is_not_null to ColumnTrait https://github.com/SeaQL/sea-orm/issues/267(The following is generated by GitHub)
https://www.sea-ql.org/SeaORM/blog/2021-10-15-whats-new-in-0.3.0
https://www.sea-ql.org/SeaORM/blog/2021-10-15-whats-new-in-0.3.0
ConnectOptionslet mut opt = ConnectOptions::new("protocol://username:password@host/database".to_owned());
opt.max_connections(100)
.min_connections(5)
.connect_timeout(Duration::from_secs(8))
.idle_timeout(Duration::from_secs(8));
let db = Database::connect(opt).await?;
assert_eq!(
Update::one(cake::ActiveModel {
name: Set("Cheese Cake".to_owned()),
..model.into_active_model()
})
.exec(&db)
.await,
Err(DbErr::RecordNotFound(
"None of the database rows are affected".to_owned()
))
);
// update many remains the same
assert_eq!(
Update::many(cake::Entity)
.col_expr(cake::Column::Name, Expr::value("Cheese Cake".to_owned()))
.filter(cake::Column::Id.eq(2))
.exec(&db)
.await,
Ok(UpdateResult { rows_affected: 0 })
);
ActiveValue::take() & ActiveValue::into_value() without unwrap()Default trait bound of PrimaryKeyTrait::ValueTypeActiveModelBehavior APIDeriveIntoActiveModel and IntoActiveValue trait#[automatically_derived] to all derived implementationsFull Changelog: https://github.com/SeaQL/sea-orm/compare/0.2.6...0.3.0
[[#224]] [sea-orm-cli] Date & Time column type mapping
r# raw identifier[[#227]] Resolve "Inserting actual none value of Option results in panic"
https://www.sea-ql.org/SeaORM/blog/2021-10-01-whats-new-in-0.2.4
https://www.sea-ql.org/SeaORM/blog/2021-10-01-whats-new-in-0.2.4
find_linked join with aliaspostgres:// and postgresql://chrono::NaiveDate & chrono::NaiveTimeCondition::not (from sea-query)[[#152]] DatabaseConnection impl Clone
[[#114]] log crate and env-logger
[[#108]] Remove impl TryGetable for Option
- Early release of SeaORM
Nothing published for this version
Your coding agent can read these notes before it upgrades. Set up the MCP server →