1

作为一个学习项目,我使用 django-nonrel 和 GAE 来设计一个包含尽可能多关于 NBA 数据的网站。因此,我需要使用夹具将大部分数据预填充到我的数据库(我正在使用 GAE 数据存储)中,因为手动输入 400 多名玩家的信息简直是不可想象的。为此,我创建了一个具有以下格式的 .yaml 固定装置(直接取自django 文档示例):

- 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 个玩家!有谁知道怎么回事??

4

1 回答 1

0

远程 API 发出 HTTP 请求以上传每个 HTTP 实体。在某些时候,您的网络连接失败,整个操作失败。

可以想到两种解决方案,但都不是特别容易: - 找到更好的互联网连接。- 修补 django-nonrel 中的夹具上传代码以进行一些自动重试而不是失败。

我不确定,但我不认为 syncdb 真的适用于生产,我相信它只是针对本地数据存储运行,这就是你看到它成功的原因。

于 2012-06-08T17:05:52.183 回答