Turbogears-using-mongodb
TurboGears-MongoDBの使用
TurboGearsは、MongoDBドキュメントデータベースもサポートしています。 オブジェクトドキュメントマッパーAPIであるMingを使用します。 Mingの使用法はSQLAlchemyと非常によく似ています。 Mingクエリ言語により、SQLAlchemyベースのTurboGearsプロジェクトをMingに移植できます。
PyMongoとは
PyMongoは、MongoDBを操作するためのツールを含むPythonディストリビューションです。 MingはPyMongoを拡張して以下を提供します-
- 宣言的モデル
- スキーマの検証と変換
- スキーマの進化
- 純粋なInMemory MongoDBの実装
- 作業単位
- アイデンティティマップ
- 1対多、多対1および多対多の関係
まず、MongoDBをダウンロードしてインストールする必要があります。 MongoDBの最新のディストリビューションは、https://www.mongodb.org/downloads#production [https://www.mongodb.org/downloads]からダウンロードできます。
Windowsでは、-dbpathオプションを指定してMongoDBサーバーを起動します-
これで、MongoDB環境の準備が整いました。
-mingオプションを使用してTurboGearsプロジェクトを作成します-
このクイックスタートプロジェクトは、SQLAlchemyバージョン用に提供されているような認証および承認レイヤーを提供します。 このアプリケーションは、ローカルマシンのポート27017でサーバーに接続しようとします。 プロジェクトフォルダ内のdevelopment.iniファイルには、次の設定が含まれています-
次のコマンドを使用してプロジェクトを設定します-
プロジェクトフォルダには、次のファイルを持つモデルサブフォルダが含まれています-
- _ init。py_ -これは、*データベース*アクセスが設定される場所です。 コレクションを*このモジュールにインポート*する必要があります。 たとえば、このパッケージに学生コレクションを追加します。
- session.py -このファイルは、データベース接続のセッションを定義します*。 クエリを実行するセッションを指定するために *MappedClass を宣言する必要があるたびに、これをインポートする必要があります。
- auth.py -クイックスタートで認証と承認*を有効にしている場合、このファイルが作成されます。 これは、3つのコレクション repoze .whoを定義します。これは、ユーザー、グループ、および許可にさらに依存します。
コレクションを定義する
デフォルトでは、TurboGearsはMingを宣言モードで構成します。 これは、SQLAlchemyの宣言サポートに似ており、MappedClassクラスから継承する各モデルが必要です。
MappedClassでは、mongometaサブクラスが内部で使用可能である必要があります。これにより、ドキュメントを保存するコレクションの名前とドキュメントの保存に使用されるセッションに関する詳細が提供されます。
MappedClassには、ドキュメント内のフィールドの定義も含まれています。 Mingのodmモジュールには、さまざまなタイプのフィールドプロパティの定義があります-
- FieldProperty
- ForeignIdProperty
- RelationProperty
- ming.schemaモジュール*は、次のデータ型を定義します-
- ming.schema.Anything
- ming.schema.Array
- ming.schema.Binary
- ming.schema.Bool
- ming.schema.Float
- ming.schema.Int
- ming.schema.ObjectId
- ming.schema.Scalar
- ming.schema.String
このモデルに生徒のコレクションを追加するには、hello/modelsフォルダーに次のコードをstudent.pyとして保存します。
Hello \ models \ student.py
最後に、このモデルをhello \ models \ init.pyに含めます
これらのモデルをセットアップするには、次のギアボックスコマンドを実行します-
次のギアボックスコマンドでサーバーを起動します-
このアプリケーションのホームページ*(http://localhost:8080/)*を開き、マネージャーの資格情報でログインします。 このアプリケーションの管理ページには、セットアップされたモデルのリストが表示されます。 (マネージャーとしてログイン、パスワードmanagepass)
コレクションの作成は、MongoDB WebインターフェイスとMongoDBシェルでも確認できます。
ODMSessionは、次の機能を使用していくつかのデータベース操作を実行するために使用されます-
- model.query.find()
- model.query.find_and_modify()
- model.remove()
- model.update() *model.flush()
ToscoWidgetフォームの設計
ToscoWidgetフォームを設計して、学生データを入力し、学生モデルの基礎となるテーブルに追加します。
以下は、studentform.pyを作成するためのコードです-
Hello \ controllers \ studentform.py
add()関数を呼び出すアプリケーションのRootcontroller '/add' URLで、ブラウザーで上記の設計されたフォームを開きます。 次に、その送信ボタンはsave_record()関数を呼び出します。 フォームデータを取得し、それを学生テーブルに保存し、アプリケーションを '/listrec' URLにリダイレクトします。これにより、studentlistテンプレートが公開されます。
このアクティビティのroot.pyは次のとおりです-
こんにちは/controllers/root.py
次のテンプレートがテンプレートフォルダに作成されます-
こんにちは\テンプレート\学生フォーム
Hello \ templates \ studentlistl
サーバーを再起動し、ブラウザに http://localhost:8080/add と入力します-
データが追加され、送信ボタンが押されるたびに、現在のエントリのリストが表示されます。