2009-04-14 15 views
0

私はGoogle App Engineアプリケーションを使っています。ファイルシステムのイメージをデータベースのエンティティに関連付けるところまで来ました。Google App Engineのエンティティとイメージを関連付けるには

エンティティをデータベースにアップロードするためにbulkupload_client.pyスクリプトを使用していますが、ファイルシステムファイルをエンティティに関連付ける方法を理解しようとしていません。エンティティは以下の画像がある場合:私は、各エンティティのGUIDを作成していることを使用することができたと<entity_key> _main.jpg

:メイン、ディテール、フロントに、バック私はは、私はこのような命名スキームをしたいかもしれないと思うしかし、私はむしろそうする必要はありません。

アイデア?

エンティティキーはローカルとプロダクションのデータストアで異なる可能性があるので、プロダクションバルクアップロード後にすべてのイメージの名前を変更する必要があると思います。

答えて

0

GAEに関する私の非常に限られた知識に基づいて、ここでは2つのオプションがあります。

まず、GAEのファイルシステムに実際に何も書き込むことはできません。つまり、インクルードしたい画像はwebappの一部としてアップロードする必要があるため、既知の変更不可能な静的な名前とディレクトリ構造を持つことになります。この場合、_main.jpg、OR /entity_key/main.jpgの考え方はうまくいくはずです。

2番目のオプションは、画像をデータベースにBLOBとして保存することです。これにより、画像を更新する必要があるたびに新しいバージョンのWebアプリケーションをアップロードするのではなく、画像を動的にアップロードすることができます。それはすぐに無料のデータベース空間に食べるだろう。ここでは、データベースから写真を提供する方法について説明します。 http://code.google.com/appengine/articles/images.html

+0

はい、私はプロジェクトを展開するときにイメージをアップロードしています。エンティティキーを使用することはできないと思います。なぜなら、私のdevデータストアと本番データストアに一括アップロードするときには異なるかもしれないからです。 – MStodd

+0

ええ、あなたはあなたが支配し、変更されないことが保証されている何らかの種類の識別子が必要です。 – digitaljoel

0

イメージを静的にアップロードする場合は、キーベースのスキームを使用できます。キー名をエンティティに割り当てるだけで、関連するイメージを見つけることができます。

myentity = EntityClass(key_name="bleh", foo="bar", bar=123) 
myentity.put() 

、あなたはそうのようなエンティティのキ​​ー名を取得することができます:あなたは、エンティティクラスにkey_nameはコンストラクタの引数として(Pythonのバージョンで)キー名を指定し

myentity.key().name() 

ですねデータストアのエンティティのように基本的には静的なコンテンツなので、ソースのリテラルとしてエンコードしてメモリに保存するか、実行時にローカルのデータファイルからロードする方がよいでしょう。それらのデータストア?

関連する問題