回答

2

這取決於你的目標是和你是否正在使用dbnbd

如果您使用str(key),您將得到一個實體密鑰,並需要構造一個新密鑰(取決於該值在服務器上)。使用ndb,我會建議使用key.urlsafe()以明確,然後ndb.Key(urlsafe=value)來創建新密鑰。不幸的是,你可以用db做的最好的是str(key)db.Key(string_value)。使用key.id()也取決於ndbdb。如果您使用的是db,那麼您知道該值將是一個整數(並且key.name()將是一個字符串),但如果您使用的是ndb,它可能是整數或字符串。在這種情況下,您應該使用key.integer_id()key.string_id()。無論哪種情況,如果將整數轉換爲字符串,則需要在檢索實體或設置鍵之前手動將其轉換爲整數;例如MyModel.get_by_id(int(value))

如果我做一個推薦,我勸你要明確你的ID,注意它們的分配方式,並給這些不透明值到API中的用戶。如果您想讓App Engine爲您分配ID,請使用protorpc.messages.IntegerField來表示這些ID,而不是轉換爲字符串。

此外,從db開關ndb,如果你還沒有。

+0

我目前使用db。既然只是爲了一個學校項目,我可能會堅持這一點,但我會爲我的下一個項目保持思想。現在ID自動分配,我得到的字符串或整數。當我從數據存儲中檢索實體時,我只是過濾了__key__字段......這是錯誤的嗎? – 2013-05-09 09:20:11

相關問題