前回の記事の単純なRESTサービスでは、データはファイルに保存されます。 これは面倒な場合があり、すべてのリクエストを読み取ったり、ファイルを書き込んだりする必要があります。より良い方法は、データベースを使用することです(MongoDB)
MongoDBは人気のあるデータベースですが、他のデータベースとは異なり、NoSQLデータベースプログラムとして分類されます(MongoDBはスキーマを使用してJSONのようなドキュメントを使用します)。
関連コース: Python Flask:Flaskを使用してWebアプリを作成する
データモデルの作成
モデル
データベースを使用してデータを保存したいので、ネイティブを使用できます pymongo
MongoDBを操作するために、しかしここでは操作を単純化する必要があるので、データモデルを作成する必要があります。
データモデルの主な機能は、データに含まれるフィールド、各フィールドのタイプ、属性(一意、またはいくつかの固定値の1つ)などを表示することです。これにより、次の情報を知ることができます。データベース内のデータを見ていなくても、データを操作するときは常にデータを使用します。
ここでは、MongoDBのFlask拡張機能を紹介します。 MongoEngine
。 MongoEngineは、Flaskに依存せずに単独で使用できますが、Flaskと組み合わせて使用することもできます。
FlaskでMongoEngineを使用するには、MongoEngineをサーバーで初期化する前に、まずFlaskでMongoDBの情報を構成する必要があります。これにより、データベースとサーバーが接続されます。これはコードで言うことができます。
1 |
app.config['MONGODB_SETTINGS'] = { |
mongodb情報を構成した後、MongoEngineを使用してデータモデルを作成できます。
名前とメールアドレスの2つのフィールドのみでモデルを作成します。
1 |
class User(db.Document): |
このようにして、データモデルが作成され、完全なコード全体は次のようになります。
1 |
|
関連コース: Python Flask:Flaskを使用してWebアプリを作成する
データへのアクセス
クエリ
次に、データベース内のデータをモデルを介して編集および編集する方法を説明します。
クエリなど、MongoEngineの更新と削除をクエリするのは非常に簡単です。次を使用できます。
1 |
User.objects(name="alice").first() |
このステートメントは、データベース内の名前がaliceであるユーザーに照会しました。 ステートメントがどのように照会されたかを分析してみましょう。
まず、User.objects、ここのUserは、それがモデルであることをすでに知っています。UserはすでにModelであるため、なぜそれがまだオブジェクトのようであるのですか?
これは、ユーザーが モデル、モデル自体はデータ構造のみを表すためです。
それは私たちのクエリと何の関係がありますか?
オブジェクトは、Userテーブルのレコードのすべてのデータを表します。
このようにして、Userオブジェクトをクエリします。
クエリを追加
新しいレコードの追加はさらに簡単です。 たとえば、lauraという名前のユーザーを挿入したいと思います。 email = [email protected]
、これを書くことができます:
とても簡単です。まず、Userオブジェクトを作成してから、saveメソッドを呼び出します。
クエリを削除する
レコードを削除する場合は、最初にこのレコードを削除する必要があります。 MongoEngineでは次のようになります。レコードを削除する場合は、レコードを見つけてクエリを使用します。
1 |
user = User.objects(name="alice").first() |
見つかったら、deleteメソッドを呼び出して次のことを行うのは簡単です。
このようにして、ユーザーaliceを削除します。
更新
更新と削除の場合と同様に、レコードを更新する必要がある場合は、ローラのメールボックスを次のように更新する必要があると仮定して、最初に彼を見つける必要があります。 laura @outlook.com
、これを書くことができます:
最初のステートメントはクエリ、2番目のステートメントはupdateメソッドを使用し、変更が必要な属性と変更された値をパラメーターとして直接渡します。
MongoDBの例
完全なコードは次のようになり、モデルを使用して追加と削除を行う方法を知っています。次に、この知識をRESTサービスに適用します。書き換え後のコードは、次のとおりです。
1 |
|
スクリプトは、導入したすべてのCRUDメソッドを使用します。
Hope this helps!
Source link