2011-06-23 10 views
1

可能性の重複:私はAppEngineの中でPythonのアプリケーションを持っている
How to implement “autoincrement” on Google AppEngineのAppEngine - AppEngineの人事データストアでの奇妙なIDの割り当て

。私はHigh Replication Datastoreを使用しています。

これは私の問題です:

私は、それはAppEngineの用語でルートエンティティの親なしで保存されたエンティティ(簡略化のために人にそれを呼び出す)ですしています。

DataStoreによって割り当てられた数値IDが必要なので、エンティティを保存する前にkey_nameを設定しません。一部のコード:

p = Person(name='Juan Roman Riquelme') 
p.put() 
p.key().id() # the numeric ID 

問題はIDが連続していないことです。私のアプリケーション(appcfg.py update。)を更新するたびに、IDは次の何千もの値から始まります。私は、私のアプリを更新する最初のIDは、1,2,3、などです。次回は:1001,1002,1003などです。太もも:2001,2002など

何が起こっているのですか?私はそれらを連続的に保つために何をすべきですか?

ありがとうございます!

+1

[this](http://stackoverflow.com/questions/3985812/how-to-implement-autoincrement-on-google-appengine)の質問をご覧ください。 –

+0

ありがとうKevin。それは本当に便利です。 – santiagobasulto

+0

それは重複していません!私はこの男が嫌いです。私はオートインクリメントを実装する方法を尋ねていませんでした。私はオートインクレメントを実装する方法を気にしません。 AppEngine管理でその問題を解決する方法を知りたかったのです。重要なことを感じるだけで物事を閉じるのが好きですか? – santiagobasulto

答えて

3

なぜ連続している必要がありますか?

App Engineのデータストアでは、連続するIDが割り当てられません。

連続したIDが必要な場合は、IDを自分で割り当てる必要があります。 append engineが既存のIDを自動的に割り当てないようにallocate_id_range(http://code.google.com/appengine/docs/python/datastore/functions.html)を使用することを忘れないでください。

+0

私はそれらが連続している必要があります。私はそれを見てみましょう。ありがとうございました! – santiagobasulto

+0

@santiagobasultoなぜあなたはそれらを連続して必要としますか?それは事実ではほとんどありません。そうしようとすると、本質的にスケーラブルではありません。あなたが試してみると、問題の混乱を招くことになります。 –

+0

@ニック。はい、あなたは正しいニックネームです。私はURLShortenerをやっていて、アルファベット(aprox 59文字)にIDをマッピングしています。 「文字の組み合わせ」を無駄にしないように、IDを連続させるのが良いでしょう。私はそれを行うための他の方法を考えています。私はちょうどMySQLの方法で考えていた。私は今雲の中にいる!ご関心をお寄せいただきありがとうございます。 – santiagobasulto

関連する問題