https://github.com/mr-fatalyst/oxyde
Oxyde ORM is a type-safe, Pydantic-centric asynchronous ORM with a high-performance Rust core designed for clarity, speed, and reliability.
https://github.com/mr-fatalyst/oxyde
async asyncio database fastapi mysql orm postgresql pydantic sqlite sqlx
Last synced: 1 day ago
JSON representation
Oxyde ORM is a type-safe, Pydantic-centric asynchronous ORM with a high-performance Rust core designed for clarity, speed, and reliability.
- Host: GitHub
- URL: https://github.com/mr-fatalyst/oxyde
- Owner: mr-fatalyst
- License: mit
- Created: 2025-11-03T21:20:02.000Z (4 months ago)
- Default Branch: main
- Last Pushed: 2026-03-10T20:44:59.000Z (4 days ago)
- Last Synced: 2026-03-10T23:02:56.580Z (4 days ago)
- Topics: async, asyncio, database, fastapi, mysql, orm, postgresql, pydantic, sqlite, sqlx
- Language: Python
- Homepage: https://oxyde.fatalyst.dev/
- Size: 5.03 MB
- Stars: 143
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- Contributing: .github/CONTRIBUTING.md
- License: LICENSE
Awesome Lists containing this project
- awesome-rust-python - oxyde - Type-safe async ORM with a high-performance Rust core. (🧰 Utilities)
README
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.
---
> **Heads 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](https://github.com/mr-fatalyst/oxyde/issues)!
## Features
- **Django-style API** — Familiar `Model.objects.filter()` syntax
- **Pydantic v2 models** — Full validation, type hints, serialization
- **Async-first** — Built for modern async Python with `asyncio`
- **Rust performance** — SQL generation and execution in native Rust
- **Multi-database** — PostgreSQL, SQLite, MySQL support
- **Transactions** — `transaction.atomic()` context manager with savepoints
- **Migrations** — Django-style `makemigrations` and `migrate` CLI
## Performance
Benchmarks 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](https://oxyde.fatalyst.dev/latest/advanced/benchmarks/)**
## Installation
```bash
pip install oxyde
```
## Quick Start
### 1. Initialize Project
```bash
oxyde init
```
This creates `oxyde_config.py` with your database settings and model paths.
### 2. Define Models
```python
# 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
```
### 3. Create Tables
```bash
oxyde makemigrations
oxyde migrate
```
### 4. Use It
```python
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())
```
## Transactions
```python
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
```
## FastAPI Integration
```python
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 Support
| 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
```
## Ecosystem
### Oxyde Admin
Auto-generated admin panel for Oxyde ORM with zero boilerplate.
- Automatic CRUD, search, filters, export
- FastAPI, Litestar, Sanic, Quart, Falcon
- Theming, authentication, bulk operations
```bash
pip install oxyde-admin
```
[GitHub →](https://github.com/mr-fatalyst/oxyde-admin)
## Documentation
Full documentation: **[https://oxyde.fatalyst.dev/](https://oxyde.fatalyst.dev/)**
- [Quick Start](https://oxyde.fatalyst.dev/latest/getting-started/quickstart/) — Get up and running
- [User Guide](https://oxyde.fatalyst.dev/latest/guide/models/) — Models, queries, relations, transactions
- [Cheatsheet](https://oxyde.fatalyst.dev/latest/cheatsheet/) — Quick reference for all methods
## Contributing
If you have suggestions or find a bug, please open an issue or create a pull request on GitHub.
## License
This project is licensed under the terms of the MIT license.