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真的可以在生产环境中工作,我相信它只是针对本地数据存储库运行,这就是为什么您会看到成功。