作为一个学习项目,我正在使用django-nonrel和GAE来设计一个尽可能多的有关NBA数据的网站。因此,我需要使用夹具预填充我的数据库(我正在使用GAE数据存储区)和大多数数据,因为手动输入400多个玩家的信息简直是不可想象的。为此,我创建了一个具有以下格式的.yaml fixture(直接来自django docs example):
- 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
不幸的是,当我运行“python manage.py remote loaddata nbadata.yaml”时,它只会加载前190个玩家(我说是因为它第一次加载190,第二次加载186)然后才开始并给我以下错误信息:
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 :(得分:0)
远程API发出HTTP请求以上传每个HTTP实体。在某些时候,您的网络连接失败,整个操作失败。
可以想到两个解决方案,但两者都不是特别容易: - 找到更好的互联网连接。 - 在django-nonrel中修补夹具上传代码,进行一些自动重试,而不是失败。
我不确定,但我认为syncdb并不适用于生产,我相信它只是针对本地数据存储运行,这就是为什么你看到成功的原因。