質問: 上記、sqlalchemy に定義されているデータ型のドキュメントを眺めていました。 たとえばテキスト型であれば、 `sqlalchemy.types.Text` と、 `sqlalchemy.types.TEXT` が定義されているのがみて取れます。 ### 質問 * 上記ページに記載されている、 CameCase のデータ型と、 CONSTCASE のデータ型の違いは何ですか? * 実際に上記データ型を用いて、 orm のモデルを定義するような場合には、どちらを利用するべきですか?
回答: 参照先の他に、これらの記事と併せてみると、以下のように思われます。 Generic Types | Defining Schema in SQLAlchemy Core - OverIQ.com Defining Schema in SQLAlchemy ORM - OverIQ.com SQLAlchemy Types Generic vs SQL Essential SQLAlchemy by Rick Copeland Chapter 4. SQLAlchemy Type Engines **CamelCase のデータ型と、 CONSTCASE のデータ型の違いは何ですか?** * CamelCase のデータ型 ジェネリック型と呼ばれ、主要なデータベースバックエンドがサポートする一般的な型を指します。 ジェネリック型を使用する場合、SQLAlchemyはテーブルの作成中にデータベースバックエンドで利用可能な最適な型を使用します。 * CONSTCASE のデータ型 SQL標準型またはマルチベンダ型/ベンダ固有型と呼ばれ、SQL標準仕様または個々のデータベースバックエンドに固有の型を指します。 「ジェネリック型」とは異なり、「SQL標準/マルチベンダ/ベンダ固有型」はすべてのデータベースバックエンドで動作することを保証せず、名前で明示的にサポートするバックエンドでのみ動作します。 **実際に上記データ型を用いて、 orm のモデルを定義するような場合には、どちらを利用するべきですか?** * CamelCase のデータ型と思われます。 特定の何かを使いたいとか、何らかの事情で使わざるを得ない場合以外は、CamelCaseのジェネリック型を使う方が良いと思われます。 関係は薄い(というか無い?)ですが他に興味を引いた記事: SQLAlchemyなどのORMエンジンを使う意味 とりあえず使えそうな SQLAlchemy 入門(※ ORM機能は使いません) PlaySQLAlchemy: SQLAlchemy入門