2012-12-08 51 views
3

在我的本地機器(即​​)後,我已將數據輸入我的GAE數據存儲對一些實體,稱爲Article。在關閉我的電腦並在第二天重新啓動後,我發現數據存儲爲空:沒有實體。有沒有辦法在將來防止這種情況?本地數據存儲GAE不保留數據的計算機關機

如何製作本地數據存儲中的數據副本?另外,我能否將這些數據稍後上傳到本地主機和生產環境中?

我的模型是ndb

我正在使用Max OS X和Python 2.7,如果這些問題。除非使用-c標誌啓動它來清除它,至少在PC上

+0

我使用'GoogleAppEngineLauncher'啓動我的應用程序,而不是終端。 – kasavbere

+0

我有同樣的問題。但是,我正在使用Linux。默認數據存儲路徑位於/ tmp目錄中,這可能是數據存儲在每次關閉後都被刪除的原因。並且更改'--datastore-path'對我有用。 – xiaohan2012

回答

1

數據在本地數據存儲中被保留。因此,您可能會遇到與臨時文件或權限有關的其他問題。

本地數據是使用不同的方法來生產實際的服務器存儲,所以不知道你是否可以做一個直接備份本身。如果你想上傳數據到本地和部署的服務器,你可以使用上傳工具套件:uploading data

批量載入程序工具可以上傳和下載數據,並從您的應用程序的數據存儲。只需一點設置,您就可以從CSV和XML文件上傳新的數據存儲實體,並將實體數據下載到CSV,XML和文本文件中。大多數電子表格應用程序可以導出CSV文件,使非開發人員和其他應用程序可以輕鬆生成可導入到應用程序的數據。您可以自定義上傳和下載邏輯以使用不同類型的文件,或執行其他數據處理。

因此,您可以通過將數據下載到文件中進行「備份」。

要將數據加載/拉入本地開發服務器,只需將它提供給本地URL即可。

+0

到目前爲止,我只在本地服務器上使用GAE。我沒有任何憑據設置。當我嘗試通過'appcfg.py update '安裝remote_api時,我需要收到電子郵件。我必須首先設置憑據以下載api嗎?當我需要去製作的時候,我希望能夠降低這一點。 – kasavbere

+0

我一直都有證書,所以我不知道,這是很久以前。 –

+0

在將應用上傳到生產服務器之前,您必須設置一個帳戶。 – dragonx

1

數據存儲通常在關閉時保存到磁盤。如果您在不關閉服務器的情況下關閉計算機,我可以看到發生這種情況。

7

我遇到過同樣的問題。在運行dev_appserver.py時聲明數據存儲路徑應該修復它。這些是我在啓動dev_appserver時使用的參數

python dev_appserver.py --high_replication --use_sqlite --datastore_path=myapp.datastore --blobstore_path=myapp_blobs 

這將使用sqlite並將數據保存在文件myapp.datastore中。如果你想將它保存在不同的目錄中,可以使用--datastore_path =/path/to/myapp/myapp.datastore

我也使用--blobstore_path將我的blob保存在特定的目錄中。我發現聲明哪個目錄保存我的斑點更可靠。再次,那是--blobstore_path =/path/to/myapp/blob或任何你想要的。

由於聲明瞭blob和數據存儲路徑,我沒有在本地丟失任何數據。更多信息可以在這裏App Engine的文檔中找到:

https://developers.google.com/appengine/docs/python/tools/devserver#Using_the_Datastore