機能¶
FastAPI向けに設計¶
SQLModelは、FastAPIの作者によって作成されました。
同じ設計とアイデアに従っており、FastAPIアプリケーションでSQLデータベースと対話する最も直感的な方法となるように作成されました。
ただし、SQLModelはFastAPIから完全に独立しており、他のタイプのアプリケーションで使用できます。その機能を活用できます。
モダンなPython¶
すべて標準のモダンなPython型アノテーションに基づいています。新しい構文を学習する必要はありません。標準のモダンなPythonだけです。
Pythonの型の使用方法を2分で復習する必要がある場合(SQLModelやFastAPIを使用しない場合でも)、FastAPIチュートリアルセクションを参照してください:Pythonの型入門。
また、セクションチュートリアル - ユーザーガイド:最初のステップで20秒の復習を見ることができます。
エディターサポート¶
SQLModelは、自動補完があらゆる場所で利用でき、最高の開発エクスペリエンスを保証するために、使いやすく直感的に設計されました。
エディターがどのように役立つかを示します。
- PyCharmの場合
最小限のコードを記述するだけで、すべてを補完できます。
モデル内のさまざまな属性の型がNone
になる可能性があるかどうかなどを推測し続ける必要はありません。SQLModelは標準のPython型アノテーションに基づいているため、エディターがすべてを支援できます。
SQLModelは、最高の開発者エクスペリエンスを保証するために、Python型アノテーションにPEP 681を採用しているため、新しいモデルインスタンスを作成している場合でも、インラインエラーと自動補完が得られます。
簡潔¶
SQLModelには、あらゆるものの適切なデフォルトがあり、あらゆる場所にオプションの設定があります。
ただし、デフォルトではすべて「そのまま機能」します。
データに対して最もシンプル(かつ最も直感的)な型アノテーションから始めることができます。
その後、SQLAlchemyとPydanticのすべての機能を使用して、すべてを微調整できます。
Pydanticベース¶
SQLModelはPydanticに基づいており、同じ設計、構文、およびアイデアを維持しています。
基礎として、✨ SQLModelモデルはPydanticモデルでもあります。✨
そのようにするために、多くの調査と努力が費やされました。
つまり、自動データ検証、シリアル化、およびドキュメントを含む、Pydanticのすべての機能を利用できます。Pydanticを使用するのと同じようにSQLModelを使用できます。
SQLテーブルを表さないSQLModelモデルを作成することもできます。その場合、それらはPydanticモデルと同じになります。
これは特に、SQLデータベースモデルを非SQLモデルから継承できるようになったため便利です。これにより、コードの重複を大幅に削減できます。また、コードの一貫性が向上し、エディターサポートが改善されます。
これにより、FastAPIアプリケーションでSQLデータベースを操作するのに最適な組み合わせになります。🚀
チュートリアルで、さまざまなモデルを組み合わせる方法について詳しく学びます。
SQLAlchemyベース¶
SQLModelはSQLAlchemyにも基づいており、すべてのものにSQLAlchemyを使用します。
基礎として、✨ SQLModelモデルはSQLAlchemyモデルでもあります。✨
そうするために、多くの調査と努力が費やされました。特に、単一のモデルをSQLAlchemyモデルとPydanticモデルの両方に同時にする方法について、多くの努力と実験が行われました。
つまり、Pythonで最も広く使用されているデータベースライブラリであるSQLAlchemyのすべての能力、堅牢性、および確実性を利用できます。
SQLModelは、開発者エクスペリエンスを向上させるための独自のユーティリティを提供しますが、基礎として、すべてのSQLAlchemyを使用します。
SQLModelモデルをSQLAlchemyモデルと組み合わせることもできます。
SQLModelは、最も一般的なユースケースを満たし、これらのケースに対して可能な限りシンプルで便利なものになるように設計されており、最高のエクスペリエンスを提供します。
ただし、より複雑な機能を必要とするよりエキゾチックなユースケースがある場合は、SQLAlchemyをSQLModelに直接接続して、コード内のすべての機能を使用できます。
テスト済み¶
- 100%テストカバレッジ(現在97%、近日中に100%に到達)。
- 100%型アノテーションコードベース。