Iceaxe

A modern, fast ORM for Python. We have the following goals:

  • ๐ŸŽ๏ธ Performance: Exceed or match the fastest ORMs in Python. We want Iceaxe to be as close as possible to raw-protocol speeds.
  • ๐Ÿ“ Typehinting: Everything should be typehinted with expected types. Declare your data as you expect in Python and it should bidirectionally sync to the database.
  • ๐Ÿ˜ Postgres only: Leverage native Postgres features and simplify the implementation.
  • โšก Common things are easy, rare things are possible: 99% of the SQL queries we write are vanilla SELECT/INSERT/UPDATEs. These should be natively supported by your ORM. If you're writing really complex queries, these are better done by hand so you can see exactly what SQL will be run.

Key Features

  • Type Safety: Full static type checking support with mypy and pyright. All select returns will typehint as the proper Python types. Insert and update objects as regular Python objects.
  • Efficient Querying: Optimized batch operations, connection pooling, and query building to maximize database performance.
  • Migration Support: Built-in migration tools for schema version control with automatic migration generation and rollback capabilities.
  • Raw SQL When Needed: Direct SQL execution with proper type casting when you need more complex queries.

Guides

Quickstart

Get up and running with Iceaxe in minutes. Learn the basics of table definition, querying, and data manipulation.

Read more

Table Definition

Master the art of defining database tables with Pydantic integration and type safety.

Read more

Querying Data

Learn how to write efficient SELECT queries with full type inference and join support.

Read more

API Reference

Comprehensive API documentation for all Iceaxe classes and functions.

Read more