Django 1.8错误:未指定数据库夹具

时间:2015-06-21 20:23:08

标签: python django postgresql django-database

我使用的是sqlite数据库,在应用python manage.py dumpdata后,我在postgresql

中添加了新的settings.py数据库设置
DATABASES = {
'default': {
    'ENGINE': 'django.db.backends.postgresql_psycopg2',
    'NAME': 'music',                      
    'USER': '**',
    'PASSWORD': '****',
    'HOST': '127.0.0.1',
    'PORT': '5432',
    }
  }

但是当我尝试将数据加载到新的postgresql数据库时,我收到以下错误

C:\Users\Saket\musicalguru>python manage.py loaddata
usage: manage.py loaddata [-h] [--version] [-v {0,1,2,3}]
                      [--settings SETTINGS] [--pythonpath PYTHONPATH]
                      [--traceback] [--no-color] [--database DATABASE]
                      [--app APP_LABEL] [--ignorenonexistent]
                      fixture [fixture ...]
manage.py loaddata: error: No database fixture specified. Please provide the  path of at least one fixture in the command line.

无法理解错误是什么。我已经在sqlite数据库中有数据,所以我也需要postgresql数据库中的新数据。

2 个答案:

答案 0 :(得分:4)

你能说明你是如何进行数据转储的吗?如果您查看dumpdata docs,您会看到它:

  

输出标准输出与指定应用程序关联的数据库中的所有数据。

  

默认情况下,dumpdata会将其输出格式化为JSON

现在,如果你看看你的错误,你会发现你错过了一个数据库夹具。 loaddata docs告诉灯具是什么以及Django将在哪里寻找灯具:

  

fixture是包含数据库的序列化内容的文件集合。每个夹具都有一个唯一的名称,构成夹具的文件可以分布在多个应用程序的多个目录中。

     

Django将在三个地点搜索灯具:

     
      
  1. 在每个已安装的应用程序的fixtures目录中
  2.   
  3. FIXTURE_DIRS设置
  4. 中指定的任何目录中   
  5. 在灯具命名的文字路径中
  6.   

因此,您可以使用转储数据的文件:

./manage.py dumpdata ... > mydata.json
./manage.py loaddata mydata.json

答案 1 :(得分:1)

如果文件不在app loaddata目录中,您需要告诉fixtures要加载哪个文件:

python manage.py loaddata file/path/of/dumbdata.json

您可以将转储的数据移动到app的fixtures目录中,也可以手动指定文件,如上所述。阅读关于loaddata命令here的移动。