Oxyde ORM is a type-safe, Pydantic-centric asynchronous ORM with a high-performance Rust core designed for clarity, speed, and reliability.
Inspired by the elegance of Django's ORM, Oxyde focuses on explicitness over magic, providing a modern developer-friendly workflow with predictable behavior and strong typing throughout.
FeaturesHeads up! Oxyde is a young project under active development. The API may evolve between minor versions. Feedback, bug reports, and ideas are very welcome. Feel free to open an issue!
Model.objects.filter() syntaxasynciotransaction.atomic() context manager with savepointsmakemigrations and migrate CLIBenchmarks vs popular Python ORMs (avg ops/sec, higher is better):
| Database | Oxyde | Tortoise | Piccolo | Django | SQLAlchemy | SQLModel | Peewee |
|---|---|---|---|---|---|---|---|
| PostgreSQL | 1,475 | 888 | 932 | 736 | 445 | 431 | 80 |
| MySQL | 1,239 | 794 | — | 714 | 536 | 505 | 461 |
| SQLite | 2,525 | 1,882 | 469 | 1,294 | 588 | 567 | 548 |
Full benchmark report: Documentation
Installation Quick Start 1. Initialize ProjectThis creates oxyde_config.py with your database settings and model paths.
# models.py from oxyde import Model, Field class User(Model): id: int | None = Field(default=None, db_pk=True) name: str email: str = Field(db_unique=True) age: int | None = Field(default=None) class Meta: is_table = True
oxyde makemigrations oxyde migrate
import asyncio from oxyde import db from models import User async def main(): await db.init(default="sqlite:///app.db") # Create user = await User.objects.create(name="Alice", email="alice@example.com", age=30) # Read users = await User.objects.filter(age__gte=18).all() user = await User.objects.get(id=1) # Update user.age = 31 await user.save() # Delete await user.delete() await db.close() asyncio.run(main())
from oxyde.db import transaction async with transaction.atomic(): user = await User.objects.create(name="Alice", email="alice@example.com") await Profile.objects.create(user_id=user.id) # Auto-commits on success, rolls back on exception
from fastapi import FastAPI from oxyde import db app = FastAPI( lifespan=db.lifespan( default="postgresql://localhost/mydb", ) ) @app.get("/users") async def get_users(): return await User.objects.filter(is_active=True).all()
| Database | Min Version | Status | Notes |
|---|---|---|---|
| PostgreSQL | 12+ | Full | RETURNING, UPSERT, FOR UPDATE/SHARE, JSON, Arrays |
| SQLite | 3.35+ | Full | RETURNING, UPSERT, WAL mode by default |
| MySQL | 8.0+ | Full | UPSERT via ON DUPLICATE KEY, FOR UPDATE/SHARE |
Connection URLs:
postgresql://user:password@localhost:5432/database
sqlite:///path/to/database.db
sqlite:///:memory:
mysql://user:password@localhost:3306/database
Auto-generated admin panel for Oxyde ORM with zero boilerplate.
Full documentation: https://oxyde.fatalyst.dev/
If you have suggestions or find a bug, please open an issue or create a pull request on GitHub.
LicenseThis project is licensed under the terms of the MIT license.
| # | Наименование новости | Тональность | Информативность | Дата публикации |
|---|---|---|---|---|
| 1 | Oxyde ORM - Django-like Pydantic-driven Async ORM | 0 | 31.84 | 22-03-2026 |
| 2 | django-modern-rest: REST With Types and Async Support | 0 | 24.29 | 23-04-2026 |
| 3 | onlymaps: A Python Micro-ORM | 0 | 35 | 10-01-2026 |
| 4 | rsloop: An Event Loop for Asyncio Written in Rust | 0 | 10 | 20-04-2026 |
| 5 | svc-infra: Bundled FastAPI Infrastructure | 0 | 35 | 02-01-2026 |
| 6 | django-orm-lens: Django Schema Review | 0 | 35 | 10-08-2026 |
| 7 | django-tasks-db - An ORM-based backend for Django Tasks | 0 | 35 | 21-02-2026 |
| 8 | Pyre: New JIT Python interpreter written in Rust | 0 | 10 | 06-04-2026 |
| 9 | PyInfra: Infrastructure Deserves Real Code in Python, Not YAML Soup | 0 | 10 | 07-02-2026 |
| 10 | Semantic Caching for LLMs: FastAPI, Redis, and Embeddings | 0 | 10 | 29-04-2026 |