1

作爲一個學習項目,我使用django-nonrel與GAE一起設計了一個儘可能多的有關NBA數據的網站。因此,我需要使用夾具預先填充我的數據庫(我使用GAE數據存儲)和大部分數據,因爲手動輸入400多位玩家的信息簡直是不可想象的。爲此,我創建了以下格式的.yaml夾具(從django docs example直取):Django-nonrel:只有部分夾具數據在生產中加載

- model: players.player 
    pk: 1 
    fields: 
    team: 10 
    first_name: Jeff 
    last_name: Adrien 
    age: 25 
    pos: SF 
    gp: 8 

- model: players.player 
    pk: 2 
    fields: 
    team: 7 
    first_name: Arron 
    last_name: Afflalo 
    age: 26 
    pos: SG 
    gp: 32 

不幸的是,當我運行「蟒蛇manage.py遠程loaddata nbadata.yaml」,它只是加載圍繞第一190級的玩家(我說的周圍,因爲它第一次裝載190,它裝載186第二次)crapping出來,給我下面的錯誤消息之前:

File "/usr/local/google_appengine/lib/fancy_urllib/fancy_urllib/__init__.py", 
line 367, in do_open 
raise url_error 
URLError: <urlopen error [Errno 101] Network is unreachable> 

有誰知道這是怎麼回事,和是否有解決方案?

更新:我將.yaml文件的名稱更改爲'initial_data.yaml',以查看在'python manage.py deploy'進程的syncdb部分期間自動加載是否會更好。我得到以下結果:

Running syncdb. 
Creating tables ... 
Installing custom SQL ... 
Installing indexes ... 
Installed 448 object(s) from 1 fixture(s) 

但是,當我查看數據存儲時,仍然只有186個玩家!有誰知道發生了什麼事?

回答

0

遠程API發出一個HTTP請求來上傳每個HTTP實體。在某個時候,您的網絡連接失敗,整個操作失敗。

可以想到兩種解決方案,但都不是特別容易: - 找到更好的互聯網連接。 - 修補django-nonrel中的燈具上傳代碼,做一些自動重試,而不是失敗。

我不確定,但我不認爲syncdb真的可以在生產環境中工作,我相信它只是針對本地數據存儲庫運行,這就是爲什麼您會看到成功。