Flask-sqlalchemy
フラスコ– SQLAlchemy
Flask Webアプリケーションで生のSQLを使用してデータベースでCRUD操作を実行するのは退屈です。 代わりに、Pythonツールキットである SQLAlchemy は、アプリケーション開発者にSQLのフルパワーと柔軟性を提供する強力な* ORマッパー*です。 Flask-SQLAlchemyは、FlaskアプリケーションにSQLAlchemyのサポートを追加するFlask拡張機能です。
- ORM(オブジェクト関係マッピング)とは何ですか?*
ほとんどのプログラミング言語プラットフォームはオブジェクト指向です。 一方、RDBMSサーバーのデータはテーブルとして保存されます。 オブジェクト関係マッピングは、オブジェクトパラメータを基になるRDBMSテーブル構造にマッピングする手法です。 ORM APIは、生のSQLステートメントを記述することなくCRUD操作を実行するメソッドを提供します。
このセクションでは、Flask-SQLAlchemyのORMテクニックを研究し、小さなWebアプリケーションを構築します。
- ステップ1 *-Flask-SQLAlchemy拡張機能をインストールします。
- ステップ2 *-このモジュールからSQLAlchemyクラスをインポートする必要があります。
- ステップ3 *-Flaskアプリケーションオブジェクトを作成し、使用するデータベースのURIを設定します。
ステップ4 *-次に、パラメータとしてアプリケーションオブジェクトを使用して、SQLAlchemyクラスのオブジェクトを作成します。 このオブジェクトには、ORM操作のヘルパー関数が含まれています。 また、ユーザー定義モデルの宣言に使用される親Modelクラスも提供します。 以下のスニペットでは、 *students モデルが作成されます。
ステップ5 *-URIに記載されているデータベースを作成/使用するには、 create_all()*メソッドを実行します。
次のセッションメソッドはCRUD操作を実行します-
- db.session.add (model object)-マッピングされたテーブルにレコードを挿入します
- db.session.delete (model object)-テーブルからレコードを削除します
- * model.query.all()*-テーブルからすべてのレコードを取得します(SELECTクエリに対応)。
filter属性を使用して、取得したレコードセットにフィルターを適用できます。 たとえば、学生のテーブルで city = ’Hyderabad’ のレコードを取得するには、次のステートメントを使用します-
このように多くのバックグラウンドがあるので、今度は、学生データを追加するためのアプリケーションのビュー機能を提供します。
アプリケーションのエントリポイントは、 ’/’ URLにバインドされた* show_all()*関数です。 学生のレコードセットテーブルは、パラメータとしてHTMLテンプレートに送信されます。 テンプレート内のサーバー側コードは、HTMLテーブル形式でレコードをレンダリングします。
テンプレート*( ‘show_alll’)*のHTMLスクリプトは次のとおりです-
上記のページには、 ’/new’ URLマッピング* new()関数へのハイパーリンクが含まれています。 クリックすると、学生情報フォームが開きます。 データは *POST メソッドで同じURLに投稿されます。
newl
httpメソッドがPOSTとして検出されると、フォームデータが学生テーブルに追加され、アプリケーションは追加されたデータを表示するホームページに戻ります。
以下に示すのは、アプリケーション*(app.py)*の完全なコードです。
Pythonシェルからスクリプトを実行し、ブラウザーに http://localhost:5000/ と入力します。
- 「生徒を追加」*リンクをクリックして、*生徒情報*フォームを開きます。
フォームに記入して送信します。 送信されたデータとともにホームページが再表示されます。
次のように出力を確認できます。