Ecto is unclaimed —
Ecto
A toolkit for data mapping and language integrated query for Elixir·ecto.hexdocs.pm
Ecto is a toolkit for data mapping and language-integrated querying in the Elixir programming language. It is split into four main components: Ecto.Repo (a wrapper around the data store for creating, updating, deleting and querying entries), Ecto.Schema (for mapping external data, such as database tables, into Elixir structs), Ecto.Query (a composable, secure query DSL written in Elixir syntax), and Ecto.Changeset (for tracking, casting and validating changes before they are applied to data). Most developers use Ecto together with the ecto_sql project to interact with SQL databases such as PostgreSQL and MySQL, including support for database migrations.
What it's for
Mapping database tables into Elixir structsWriting composable, secure queries against a databaseValidating and casting external data before persisting itManaging associations such as has_many, belongs_to, and many_to_manyWorking with embedded schemasRunning aggregates and subqueriesImplementing multi-tenancy via query prefixes or foreign keysBuilding dynamic queries at runtimePerforming upserts and handling database constraintsRunning schemaless queriesGrouping multiple repository operations with Ecto.MultiTesting with test factoriesVersioning database changes through migrations (via ecto_sql)
Features 19
- Aggregate functions and subqueries
- Changesets for filtering, casting, and validating data (Ecto.Changeset)
- Composable, secure query DSL (Ecto.Query)
- Constraint handling and upserts
- Custom and parameterized types (Ecto.Type, Ecto.ParameterizedType)
- Database migrations via the ecto_sql project
- Dynamic queries and dynamic fragments
- Dynamic repositories and database replicas
- Ecto.Enum for mapping atoms to strings or integers
- Ecto.Multi for grouping multiple repository operations into a transaction
- Ecto.UUID type with UUIDv7 support
- Embedded schemas (embeds_one, embeds_many)
- Mix tasks for creating/dropping database storage and generating repositories
- Multi-tenancy support via query prefixes and foreign keys
- Repository pattern for CRUD operations (Ecto.Repo)
- Schema mapping of external data into Elixir structs (Ecto.Schema)
- Schemaless queries
- Support for associations: has_many, has_one, belongs_to, many_to_many
- Window functions API (Ecto.Query.WindowAPI)
At a glance
API
TypeLibrary / SDK
DeploymentInstalled (local)
Fordevelopers
Integrations
MySQLMyXQLPostgreSQLPostgrex
Resources
Similar apps
DieselOpen sourceDiesel is a Safe, Extensible ORM and Query Builder for RustPriceNot statedTry freeFree planRuns on—Features11
TypeORMOpen sourceCode with Confidence. Query with Power.PriceNot statedTry free—Runs onWebFeatures15
SequelizeOpen sourceFeature-rich ORM for modern TypeScript & JavaScriptPriceNot statedTry freeFree planRuns on—Features14
SQLAlchemyOpen sourceThe Database Toolkit for PythonPriceNot statedTry freeFree planRuns on—Features14
DoctrineOpen sourcePHP Open Source ProjectPriceNot statedTry freeFree planRuns on—Features15
Hibernate ORMOpen sourceYour relational data. Objectively.PriceNot statedTry free—Runs on—Features16