
2026/03/13 22:35
**Show HN:** *Oxyde – Pydantic にネイティブな非同期 ORM、Rust コア搭載*
RSS: https://news.ycombinator.com/rss
要約▶
Japanese Translation:
要約
Oxyde ORMは、Rustで実装された高性能・型安全な非同期Python ORMです。Djangoの慣れ親しんだAPIを模倣し、Pydantic v2を用いて完全なデータ検証を行います。ベンチマークでは、PostgreSQLで1,475 ops/sec、MySQLで1,239 ops/sec、SQLiteで2,525 ops/secと、非同期優先設計と効率的なRustコアのおかげで他の人気ORMを上回っています。
コア機能
- Django風API(
など)+Pydantic v2モデルによる検証。Model.objects.filter() - 原子トランザクション:
(セーブポイント付き)。transaction.atomic() - マイグレーション:
/makemigrations
コマンド。migrate - 完全な CRUD API と複数バックエンドのサポート:PostgreSQL ≥12、SQLite ≥3.35、MySQL ≥8.0。
クイックスタート
- データベースURL(
、postgresql://…
、またはsqlite:///…
)を記載したmysql://…
を作成。oxyde_config.py - モデルを定義(例:
)。class User(Model): … - マイグレーション実行:
。make migrations && make migrate - 非同期関数でレコードの作成・読み取り・更新・削除を行う。
エコシステム
- Webフレームワーク統合:FastAPI(
)、Litestar、Sanic、Quart、Falcon。lifespan=db.lifespan(default="postgresql://localhost/mydb") - Oxyde Admin:テーマと認証付きの管理パネルを自動生成。
- バルク操作やその他ツールも利用可能。
プロジェクトはアクティブに保守されており、小規模リリース間でAPI変更が生じる場合があります。貢献者はGitHub上でフィードバックやプルリクエストを送信することが奨励されています。Oxyde ORMはMITライセンスの下で公開されており、開発者や企業が効率的な非同期アプリケーションを構築しつつデータベース管理と運用を簡素化できるようにしています。
本文
Oxyde ORM は、型安全かつ Pydantic を中心に設計された非同期 ORM です。
Rust コアが高速性を実現し、シンプルさ・パフォーマンス・信頼性に重点を置いています。
Django の ORM からインスピレーションを得ており、マジックよりも明示的な設計を採用しています。強力な型付けと予測可能な挙動で、モダン開発者向けのワークフローを提供します。
注意
Oxyde はまだ若いプロジェクトですので、マイナーバージョン間で API が進化する可能性があります。フィードバック・バグ報告・アイデア提出を歓迎します。お気軽に issue を開いてください!
主な特徴
- Django‑style API –
など親しみやすい構文Model.objects.filter() - Pydantic v2 – 完全なバリデーション、型ヒント、シリアライゼーション
- Async‑first – 現代の async/await Python 向け設計
- Rust performance – SQL 生成・実行はネイティブ Rust で高速化
- マルチ DB – PostgreSQL, SQLite, MySQL をサポート
- トランザクション –
コンテキストマネージャ(savepoints 付き)transaction.atomic() - Migrations – Django スタイルの
とmakemigrations
CLImigrate
ベンチマーク(平均 ops/sec、数値が大きいほど良好)
| データベース | 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 |
詳細レポートは公式ドキュメントで確認できます。
インストール
pip install oxyde
クイックスタート
1. プロジェクト初期化
oxyde_config.py が生成され、データベース設定とモデルパスを記述します。
2. モデル定義
# 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. テーブル作成
oxyde makemigrations oxyde migrate
4. 実際に使う
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) # 成功時は自動コミット、例外でロールバック
FastAPI 連携
from fastapi import FastAPI from oxyde import db, User 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()
データベースサポート
| DB | 最低バージョン | ステータス | 備考 |
|---|---|---|---|
| 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 |
接続 URL の例
postgresql://user:password@localhost:5432/databasesqlite:///path/to/database.dbsqlite:///:memory:mysql://user:password@localhost:3306/database
エコシステム
- Oxyde Admin – 自動生成された管理パネル(CRUD、検索、フィルタ、エクスポート)
- FastAPI, Litestar, Sanic, Quart, Falcon での統合
- テーマ設定・認証・バルク操作もサポート
ドキュメント & コントリビュート
- 公式ドキュメント: https://oxyde.fatalyst.dev/
- クイックスタート – すぐに動かせるチュートリアル
- ユーザーガイド – モデル、クエリ、関係、トランザクション
- チートシート – 全メソッドのクイック参照
バグ報告やプルリクエストは GitHub で受け付けています。
ライセンス
MIT License の下で配布されています。