Django 转储单个模型的数据?

我可以执行 姜戈中的 dumpdata只在一个单一的模式,而不是整个应用程序,如果可以,如何?

对于一个应用程序来说,它应该是:

python manage.py dumpdata myapp

但是,我希望转储一些特定的模型,比如“ myapp.mymodel”。原因是,我有一些巨大的,300多万记录,在同一个应用程序中的数据集,我不想抛弃。

109892 次浏览

我认为你的问题已经有了解决方案,你可以像这样抛弃一个单独的模型:

./manage.py dumpdata myapp.my_model

从版本1.1及更高版本开始,Django dumpdata管理命令允许您从单个表中转储数据:

./manage.py dumpdata myapp1 myapp2.my_model

您还可以在命令行上分离多个应用程序和模型:

django-admin dumpdata [app_label[.ModelName] [app_label[.ModelName] ...]]

作为一个解决方案,您可以创建另一个应用程序并复制模型,但是将其指向具有 db _ table 元选项的现有表。然后你就可以把复制的模型转储到新的应用程序中。你现有的应用程序不会受到影响。

正如前面提到的,在 Django 1.0中不能通过 manage.py 命令完成此操作。然而,您可以使用脚本导出 JSON 文件,并使用 loaddata加载它:

from django.core import serializers
from myproject.myapp import models
data = serializers.serialize("json", models.MyModel.objects.all())
out = open("mymodel.json", "w")
out.write(data)
out.close()

我已经创建了一个管理命令,用于在每个模型的基础上生成一个 fixture。 Fixture 可以通过运行以下命令生成:

./manage generate_fixtures app.model.MyModel --file=dump/MyModel.json

密码: https://gist.github.com/2394883

为了获得成功,我必须说两次,并指定模型两次,比如:

./manage.py dumpdata myapp2.my_model myapp2.my_model

如果我说

./manage.py dumpdata myapp2 myapp2.my_model

我被 myapp2中的所有模型淹没了,尽管我指定了 my _ model。

从 django 模型将所有数据转换为 json 格式。

句法:

python manage.py dumpdata app_name.model_name

对于 例子从 group _ mission 模型中转储数据,该模型位于 django 中默认的 auth 应用程序中。

python manage.py dumpdata auth.group_permission

要获得输出,请查看 控制台

将其写入特定文件:

python manage.py dumpdata app_label.ModelName app_label.ModelName2 > fixtures/specic.json

如果只希望转储模型的指定对象,则可以对 dump data 命令使用 PK可选参数。

—— pks PRIMARY _ KEYS 仅输出由逗号分隔的主键列表指定的对象。只有在倒垃圾的时候才有 默认情况下,模型的所有记录都被输出。

特定文件的特定模型:

python manage.py dumpdata app_label.ModelName > specific_file.json

并将其加载到另一个应用程序: 首先将该文件移动或复制到您希望处理该文件的应用程序,然后:

python manage.py loaddata specific_file.json

对于像我这样的 Django 和 Python 新手来说,这可能是有用的:

如果你只想转储一行(当然是一个表) ,例如你有一个应用程序“商人”,模型也被命名为“商人”,你通常使用一个完全限定的名称来导入它,如: merchant.models.Merchant; 别想用这个名字。语法如下:

# only dumps the merchant with id = 123, pretty printed
python manage.py dumpdata merchant.Merchant --pks 123 --indent 2

用于将数据从特定 APP 的特定模型中转储出来。


如果我们举一个例子,我们有一个主要项目(我们去叫它 < strong > project ) ,在这个主要项目我们有两个(02)其他应用程序(我们去叫每个应用程序像这样的 APP1 APP2 ) ,我们可以这样做


  1. Py dump 数据 APP1.name _ of _ model > APP1/fixture/name _ of _ model. json
  2. Py dump 数据 APP2.name _ of _ model > APP2/fixture/name _ of _ model. json