0

Google App Engine で開発サーバーを再起動するたびに、デフォルトですべてのデータが消去されることはわかっていますが、デプロイを開始するときに、すべての種類のエンティティだけでなく種類もプログラムで削除できることを知っておく必要があります。開発/展開サイクル中にエンティティを変更します。

同様の質問を見て、私はこの試みを思いつきました:

from model import *
from google.appengine.ext.db import *
from google.appengine.ext.db.metadata import *

for i in Kind.all():
    if i.kind_name == 'Person':
        i.delete() # Try one way
        db.delete(i) # Try another way
        print "Yes"
        break

...しかし、これは毎回「はい」を出力し、「人」の種類が削除されていないことを示します。これは開発サーバーの単なるアーティファクトですか、それとも Kind エンティティを削除することはできませんか?

4

1 に答える 1

3

メタデータ クエリによって返された Kind は削除できません。App Engine データストアには、種類の最後のエンティティを削除すると自動的に適応する動的スキーマがあります。ここで dev appserver に多少の遅延が発生する可能性があります。または、データストアが毎回削除されると誤解されている可能性があります。これは発生するはずがないためです。それができると思う理由は何ですか?

PS。import * をあまり使用しないでください。コードが読みにくくなり、名前の競合によりバグが発生する可能性があります...

于 2012-04-16T04:49:20.130 に答える