sql >> データベース >  >> NoSQL >> MongoDB

初心者のためのMongoDBを使用したPythonデータベースプログラミング

    このPythonデータベースプログラミングチュートリアルの目的は、PythonアプリケーションのデータストアとしてNoSQLデータベースを使用する方法を簡単に紹介することです。対象読者は、Oracle、SQL Server、MySQLなどのSQL指向データベースの使用に精通している初級レベルの開発者または中級レベルの開発者です。この記事のデモンストレーションは、初心者向けのSQL Expressを使用したPythonデータベースプログラミングなど、Pythonに関連する他のSQLデータベースプログラミングの記事で使用されているデモンストレーションと並行しており、同様にPython3を使用します。

    NoSQLとは何ですか?

    Pythonの人気は、新しいテクノロジーとの連携が容易なこともあり、人気が高まっています。そのような「新しい」テクノロジーの1つは、「NoSQL」データベースの使用です。これらのタイプのデータベースの最も魅力的な機能の1つは、名前が示すように、データベースを操作するために学習する必要のある、SQLの多くのバリエーションの1つなど、追加のクエリ言語が一般にないという事実です。プログラムの観点から。プログラミング言語のネイティブデータ構造とその構文は事実上の「クエリ言語」であり、もちろん適切なモジュールが開発環境に追加されているため、これによりアプリケーション開発が大幅に容易になります。

    ほとんどに加えて、NoSQLデータベース クエリ言語を使用せず、SQLデータベースとは大幅に異なる方法でデータを内部的に構造化します。 SQLプログラミングパラダイムに慣れている開発者は、NoSQLのビジネス方法に合わせて自分の考えを適応させる必要があります。内部的には、NoSQLデータベースサーバーの設計は同じ相違点を共有しています。 NoSQLデータベースサーバーは、即時整合性に重点を置いているSQLデータベースサーバーとは対照的に、「結果整合性」を備えた速度とスケーラビリティに重点を置いています。

    MongoDBとは何ですか?

    MongoDBは、多くの「NoSQL」データベースの1つです。 MariaDBと同様に、アクセス管理には独自のユーザー名とパスワードシステムを使用します。 MongoDBは、ゼロコストのダウンロード可能なサーバーソフトウェアを提供するだけでなく、ゼロコストのクラウドベースの導入オプションも提供します( Atlas を介して) オファリング)インスタンスをダウンロードして構成する必要性を軽減します。このデータベースプログラミングチュートリアルのデモンストレーションでは、クラウドでホストされているMongoDBの無料インスタンスを使用します。

    Pythonやその他のデータベースサーバーの場合と同様に、追加のデータベースドライバーモジュール、つまり PyMongo 、PythonがMongoDBサーバーおよびその中に含まれるすべてのデータベースと通信するために必要です。さらに、他のデータベースサーバーと同様に、MongoDBは MongoDB Shellと呼ばれるコンパニオン管理ツールを提供します 。この記事のデモンストレーションでは、このツールを使用して作成されたMongoDBデータベースを使用します。 MongoDBシェルは、MongoDB用に存在する多くの管理ツールの1つであることに注意してください。

    • MongoDBコミュニティサーバーのダウンロード
    • MongoDBゼロコストのクラウドベースの紹介サービス
    • MongoDBシェルのダウンロード

    投稿されたリンクは、この記事の執筆時点でアクティブであったことに注意してください。リンクがアクティブでなくなった場合、これらの製品は好みの検索エンジンを介してダウンロードできます。

    ソフトウェア開発用にMongoDBを構成する方法

    MongoDBゼロコストのクラウドベースの紹介サービス 構成は完全にWebベースです。シングルサインオンの目的で、自分のGoogleアカウントに便利にリンクできます。次の注意事項に注意してください。

    • 物理的に近くにあるデータホスティングサービスを選択します。この記事に示されているバージニア州のホスティングサービスは、そこから遠く離れている人には理想的ではない可能性があります。
    • アプリケーションをデータベースサーバーに接続するために使用されるパスワードは、紛失すると回復できないため、安全に保存する必要があります。リセットのみ可能です。
    • クラスター名は、一度設定すると変更できません。この記事のデモンストレーションでは、 Cluster0という名前のクラスターを使用します。 。
    • セキュリティ設定で、MongoDBシェルを含むすべてのアプリケーションが構成されているIPアドレスを確認してください。
    • MongoDBシェルにインストールプログラムがない可能性があります。このアプリケーションを含むフォルダへのパスをオペレーティングシステムのパスに必ず含めてください。

    MongoDBデータベースサーバーへの接続方法

    クラウドベースのMongoDBクラスターを正常に構成したら、それに接続するために使用される特定の接続文字列に注意する必要があります。以下の文字列は、MongoDB Atlasサイトにログインし、接続をクリックして取得することもできます。 ボタン:

    図1-接続ボタンが強調表示されたMongoDBAtlasダッシュボード

    データベースのユーザー名やパスワード、接続に許可されるIP範囲などの設定は、それぞれデータベースアクセスリンクとネットワークアクセスリンクで設定できます。

    以下は2つの接続例です。 1つ目はMongoDBシェル用です。

    MongoDB:コマンドラインから接続する

    Windowsコマンドプロンプトを開く コマンドプロンプトウィンドウを開くの初心者向けSQLExpressを使用したPythonデータベースプログラミングで説明されています 見出し。

    図2–コマンドラインを介したMongoDBシェルへの接続

    MongoDBシェルを開くコマンドは、オペレーティングシステムによって異なることに注意してください。クラスター名は異なる場合があり、コマンドで強調表示されているパラメーターをクラウドベースのMongoDBセットアップの詳細に変更する必要があります。 Windowsでは、このコマンドは mongoshと呼ばれます 。データベース名がRazorDemoであることに注意してください これは、このプログラミングチュートリアルのデモンストレーションで使用されるデータベースであるため、以下に含まれています。このコマンドは、以下に示すように、パスワードの追加パラメーターも受け入れます。

    図3–コマンドラインでのパスワードによる認証

    開発目的では、毎回パスワードを入力するのではなく、コマンドラインでパスワードを使用すると便利ですが、パスワードは以前に実行されたコマンドの履歴に表示されることに注意してください。このオプションは、他のユーザーが以前のコマンド履歴にアクセスできる開発環境では使用しないでください。

    また、うまくいけば、私が実際に 123456を使用するとは誰も思っていませんでした パスワードとしてですよね?

    図4–チェックするだけ🙂

    上記の両方の例で、 ^ 文字は、Windowsコマンドプロンプトで行継続記号として使用されます。

    PythonからMongoDBに接続する

    次の文字列は、適切な変更を加えて、 PyMongoで使用するためにPythonコードに配置できます。 ドライバー:

    図5–PythonとPyMongoを介した接続

    上記の接続文字列では、データベース名 RazorDemo myFirstDatabaseの代わりに使用されます 。

    MongoDBでデータベースを作成する方法

    MongoDBは、データベースが「使用」され、データが実際にデータベースに書き込まれるまで、データベースを「作成」しません。以下の画像は、 RazorDemoを使用したMongoDBAtlasサービスへの正常な接続を示しています。 データベースですが、 show dbs を使用する場合、そのようなデータベースはリストされません。 コマンド:

    図6–RazorDemoデータベースはありません…まだ

    MongoDBでデータベースを「使用」する方法

    MongoDBでは、データベースは、クエリ文字列を使用して直接接続されている場合、またはデータベース名が use の引数である場合に、「使用」されます。 指図。現在選択されているデータベースでこのコマンドを呼び出すと、そのデータベースに切り替えるのとは異なるメッセージが表示されることに注意してください。

    図7–データベースの切り替え

    データベースを実際に「作成」するには、いくつかのデータを挿入する必要があります。 RazorDemo 以前の記事「初心者向けSQLExpressを使用したC#およびPythonデータベースプログラミングを使用したRazorページの概要」のデータベースでは、アーティストという2つのテーブルを使用しています。 およびアルバム 。 MongoDBでは、SQL指向のデータベースがテーブルと呼ぶものをコレクションと呼びます。 。 Artistsという名前のコレクションに2つのエントリを作成する およびアルバム 、それぞれ、データベースとコレクションの両方を作成します。

    コレクションの各エントリは、ドキュメントと呼ばれます。 。これは、SQL指向のデータベーステーブルのレコードに似ています。

    主要なアプリケーションがテーブルの作成を保存することが重要であるのと同じように注意してください。 SQL指向データベースのステートメントの場合、同じ理由が、主要なアプリケーションのMongoDBデータベースの初期データベースおよびコレクション作成コマンドにも適用されます。

    以下のコマンドは、アーティストを作成します 単一のドキュメントを挿入してコレクションを作成し、アーティストにクエリを実行します 挿入操作の成功を確認するためのコレクション。挿入操作でJSON構文がどのように使用されるかに注意してください:

    db.Artists.insertOne({artist_name: "Skeered Tigon Stripes"})
    
    db.Artists.find({})
    
    Listing 1 - Inserting a new document.
    

    これらのコマンドは、MongoDBシェルで次の出力を提供します。

    図8–アーティストコレクションの作成

    _id 上に示したものは自動的に作成され、SQL指向のデータベースで自動的に生成された主キー値と同様に、コレクション内で一意です。

    MongoDBシェルは、 .insert()を報告する場合があることに注意してください。 コマンドは非推奨です。この例では、 .insertOne()を使用しています コマンドは、提供されている選択肢の1つです。

    同様の構文を使用して、アルバムを作成できます コレクション:

    db.Albums.insertOne({artist_name: "Skeered Tigon Stripes",album_name: "Genetically Engineered Critters"})
    
    db.Albums.find({})
    
    Listing 2 - Inserting another new document
    

    図9–アルバムコレクションの作成

    注: Enter を押すと、caniuse-liteに関連する警告が表示されます。 ドキュメントを作成するコマンドを完了する前にキーを押してください。 MongoDBシェルでは、コマンドを完了する前に、コマンドを複数の行に分割できます。この警告は、MongoDBシェルが古いドライバーを使用している可能性があり、将来のリリースで更新する必要があることを示しています。

    ドキュメント作成プロセスを中断するようには見えません。

    アルバムに関するその他のドキュメント コレクション:

    db.Albums.insertOne({ artist_name: "Skeered Tigon Stripes", album_name: "Volume Control: No" })
    db.Albums.insertOne({ artist_name: "Skeered Tigon Stripes", album_name: "Verse Vica })
    db.Albums.insertOne({ artist_name: "Skeered Tigon Stripes", album_name: "Rotten to the Core" })
    
    db.Albums.find({})
    
    Listing 3 - Additional documents for the Albums collection
    

    図10–新しい追加のアルバムドキュメント

    外部キー制約なし

    MongoDBはリレーショナルデータベース管理システムではないため、コレクション間でSQL指向のデータベーステーブルで使用される種類の外部キー制約を適用するためのメカニズムを提供しません。アプリケーションがそのような関係を維持および実施することを期待しています。 MongoDBシェルのコンテキストでは、コレクション内のドキュメント間の関係を推測できるように、値を適切に入力するのは開発者の責任です。

    .deleteOne() コマンドを使用して、誤って入力されたドキュメントを削除できます:

    db.Albums.deleteOne({ artist_name: "Skeered Tigon Stripes", album_name: "I Typed the Album Name Wrong" })
    Listing 4 - Deleting a document.
    

    ドキュメントが入力されたパラメータと一致しない場合、エラーは表示されず、代わりに、何も削除されていないことを示す確認メッセージが表示されることに注意してください。

    図11–削除されたドキュメントがないことを示す確認メッセージ

    .deleteMany() コマンドを使用して、JSON基準に一致する複数のレコードを削除できます。次のコマンドは、 Artists_nameが含まれるAlbumsコレクション内のすべてのドキュメントを削除します。 値はSkeeredTigon Stripes ではありません :

    db.Albums.deleteMany({artist_name: {$ne : "Skeered Tigon Stripes" }})
    
    Listing 5 - Deleting multiple documents based on criteria.
    

    図12–複数のレコードの削除

    MongoDBを使用したPythonデータベースプログラミングに関する最終的な考え

    MongoDBデータベースに接続する方法と、「レコード」を含むテーブルのNO SQLバージョンを作成する方法を学習したので、Pythonスクリプトを使用してMongoDBデータベースにデータを挿入する方法に進むことができます。この議論は、このPythonデータベースプログラミングチュートリアルの2番目で最後の部分であるPythonとMongoDBデータベース開発で続けます。


    1. 変数KEYSを使用してLuaからRediszunionstoreを呼び出す

    2. CouchDBとMongoDB:知っておくべき10のこと

    3. MongoDBで接続が開かれたSocketTimeout

    4. MongoDB保存データの暗号化