Flask 1. Flask & MongoDB(feat. Atlas)


入る前に。


筆者は初めてフラスコを使用した時からMongoDBを使用させられた.しかし、「窓虫」である筆者はこれまで、wslでMySQLを多くのエラーとともにどうしても返したことがある.そこで今回もMongoDBをwslに回すために、Googleでエラーに関する記事をたくさん検索しました.
それでも成功していない文章ではないので、できるだけ真似してみましたが、約3時間ほど楽楽と戦います.そして、決定塔MongoDBはwslをサポートしていないので、あっさり諦めて、他の方法を見つけました.したがって、MongoDB実行可能ファイルを直接インストールして書き込むか、クラウドデータベースを使用する方法があります.インストールが面倒なので、クラウド(Atlas)を使ってみましたが、思ったほど悪くなかったので、文章を送りました.

1. Flask



まず、フラスコとMongoDBとは何かを調べてみましょう.フラスコはPythonベースのWebフレームワークの一つです.一般的に、ドラムとフラスコの2つは最も有名なPythonベースのフレームワークの1つで、筆者はこの2つの短い体験と感じに対して、ドラムは親切に1つ1つ私たちに教えてくれた先生で、フラスコは自由放任型の先生と言える.ドラムの特徴は親切すぎて、私がコントロールできる分野が多くなくて、フラスコが自由すぎて、何から始まるのか分かりません.
とにかく、フラスコは「ミニ」フレーム.フラスコ自体は最小限の分野しか担当しておらず、残りの開発者は自分の欲しいツールを使って開発することができます.だから私が実力さえあれば、とても効果的に体現することができます.

2. MongoDB



MySQLがリレーショナル・データベースの首長である場合、MongoDBは非リレーショナル・データベースの首長と言える.実際、DB-Engines Rankingでは、MongoDBが非リレーショナル・データベースで最も上位にランクインしています.

リレーショナル・データベースと比較すると、最も比較に値する点がいくつかあります.
1.schema-less:資料の関係がないため、修正も削除も自由です.
2.JOINがない場合は、一度に関連資料を照会してインポートすることができます.他の表を参照する必要はありません.速度が速く、直感的です.
3.拡張性が高く、スライス(分存)クラスタを構築できる.

3. Atlas


MongoDBはwslでの使用は非常に困難であるが,Atlasとしての使用は非常に容易である.
ホームページ会員加入後から、ダッシュボードのようなところまで、そこに新しいアイテムを作成すればいいのです.プロジェクトを作成するとクラスタが作成され、領域をfree tier availableに設定する必要があります.計画を選択する場合は、Sandboxを選択してお金を節約する必要があります.クラスタを作成し、その中に入ってCollectionsを選択しても何もありません.Collectionは、リレーショナル・データベースでテーブルと同じ概念です.

右上にconnectがあり、ここでuriを設定して使用すると、私のプロジェクトとデータベースが接続されます.
connect yourアプリケーションにアクセスして選択すると、uriをコピーして使用するだけで、追加のインストールは必要ありません.また、マネージャを作成する必要がある設定は初めてですが、必要に応じて操作すれば簡単に作成できます.uriにmongodb+srv://<username>:<password>@cluster0.g3llr.mongodb.net/<dbname>?retryWrites=true&w=majorityと入力するように、ユーザーIDとパスワードを入力するには、覚えておいてください.
Collectionsに戻り、データベースを作成し、uriのdbnameを作成したデータベースの名前に変更します.
コードを実際に作成し、データを入れるだけで済みます.

4.接続

pip install pymongo dnspythonを使用して、必要なモジュールをインストールし、最初に実行したアプリケーションをインストールします.pyを生成し、次のように設定します.
from flask import Flask
from flask_pymongo import PyMongo

def create_app():
    app=Flask(__name__)
    app.config['MONGO_URI']=<MONGO_URI>
    mongo=PyMongo()
    mongo.init_app(app)
    return app
設定後にデータベースでCRUDを行う場合は、次のように使用します.
from flask_pymongo import PyMongo
mongo=PyMongo()

@main.route('/')
def index():
    todos_collection=mongo.db.todos
    todos=todos_collection.find()
    return render_template('index.html', todos=todos)
todos_collection=mongo.db.todosは、データベース内でtodosテーブルを検索および割り当てるプロセスです.この割当てをルーティングの外に置くとdbが見つからないため、常に関数で使用する必要があることに注意してください.