我使用的是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
数据库中的新数据。
答案 0 :(得分:4)
你能说明你是如何进行数据转储的吗?如果您查看dumpdata
docs,您会看到它:
输出标准输出与指定应用程序关联的数据库中的所有数据。
和
默认情况下,
dumpdata
会将其输出格式化为JSON
现在,如果你看看你的错误,你会发现你错过了一个数据库夹具。 loaddata
docs告诉灯具是什么以及Django将在哪里寻找灯具:
fixture是包含数据库的序列化内容的文件集合。每个夹具都有一个唯一的名称,构成夹具的文件可以分布在多个应用程序的多个目录中。
Django将在三个地点搜索灯具:
- 在每个已安装的应用程序的
fixtures
目录中- 在
中指定的任何目录中FIXTURE_DIRS
设置- 在灯具命名的文字路径中
醇>
因此,您可以使用转储数据的文件:
./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的移动。