2012-12-04 55 views
3

我有一個實體字段已經保存在數據存儲爲字符串。 appengine中的字符串限制多達500個字符。谷歌AppEngine字符串到文本

如何將其更改爲文本並使所有舊值仍可用?

+0

請記住TextProperty不能被索引 – 2012-12-05 05:22:12

回答

3

我推薦以下方法,尤其是如果該代碼是在生產:

  • 在實體引入一個新的文本字段。
  • 編寫一個簡單的遷移代碼來遍歷每個實體,然後從String屬性讀取現有值並將其放入新的Text屬性中。
  • 將當前代碼修改爲只能從新的Text屬性進行寫入和讀取。

上述方法將幫助您逐步明智地做事情,在事情出錯的情況下,至少您有舊的屬性和舊的值。

0

你必須使用db.TextProperty,但是你不能索引這個屬性。

要使用它:

class Example(db.Model): 
    .... 
    content = db.TextProperty() 



content_text = db.Text(example.content) 

or 

example.content = db.Text(content_text) 
+0

我正在使用java。 –

+0

在java中,您還有一個com.google.appengine.api.datastore.Text:文本字符串long最大1 MB – voscausa

+0

是的,問題是我需要新的插入文本,並使前一個字符串仍可用於讀。 –

0

對於像這些任務,我用一個servlet與動作參數去執行數據庫操作。在你的情況下,更新實體類,遍歷實體並相應地設置你的值。

0

只需將字段作爲文本獲取。它會工作。無需將現有值遷移到新字段和全部!