1

私は NDB ユーザーですが、このオブジェクト データベースは非常に優れています。しかし、デプロイ後に特定のデフォルト値を直接シードするにはどうすればよいでしょうか? データベースのシーディングのための事前定義された機能または標準化された方法はありますか?

例として:

次のndb.Modelがあり、ある種の「既存のデフォルトの親」が必要です。

Category(ndb.Model):
    name = ndb.StringProperty(required=True)
    parent = ndb.KeyProperty(kind='Category',required=True, 
                   default=<KeyOfRootCategory>)

次のシード値をどこに置くか?

main_category = Category(name="all", parent=None) #this is the root category
main_category.put()
4

3 に答える 3

2

そのための専用の「展開後」フックがあるようには見えません。メイン ハンドラー スクリプト (「webapp2.WSGIApplication(...)」を含むコード) にコードを挿入して、ルート カテゴリが既に存在するかどうかを確認し、存在しない場合は作成します。あるいは、これは何らかのハンドラー アクションの一部である可能性があります。

于 2014-05-02T17:09:48.370 に答える
0

私はあなたが求めていることを理解していると思います。

エンティティを作成しなくても、親キーを作成できます。これにより、エンティティ グループが定義されます。

または、親は必要ありませんが、任意の子の親になります。キーで親が定義されていないエンティティは、それ自体のエンティティ グループのルートになり、そのエンティティ グループは 1 つ以上のメンバー (つまり、それ自体と任意の子) を持つことができます。

于 2014-01-21T13:11:53.380 に答える