django 数据导入导出

本文介绍了在Django中如何进行数据的导入导出,包括使用`bulk_create()`批量导入,利用fixture,以及通过`django-import-export`库支持CSV、XLS等格式的数据操作。并提供了相关教程链接作为参考。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

这是大概一年前面试的时候一位面试官问我的问题,后来就一直想要整理一下笔记
写在最前面的小备忘,在django中单独执行某个python文件,需要添加如下

import os
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "mysite.settings")

import django
if django.VERSION >= (1, 7):#自动判断版本
    django.setup()

shell终端
使用django环境的终端 python manage.py shell,可以直接创建一些数据

$ python manage.py shell
>>> from blog.models import Blog
>>> Blog.objects.create(title="I am blog", content="Hello,This is a blog test")

批量导入脚本

from blog.models import Blog
f = open('oldblog.txt')
for line in f:
    title,content = line.split('****')
    Blog.objects.create(title=title,content=content)
    #如果导入过程中出错或者手动导入一部分,重新导入害怕数据重复,可以使用
    #Blog.objects.get_or_create(title=title,content=content)
f.close()

fixture

#导出数据
python manage.py dumpdata [appname] >appname_data.json
#导入数据
#根据自己的models,创建如下类似json文件
python manage.py loaddata fixture.json
[
  {
    "model": "myapp.person",
    "pk": 1,
    "fields": {
      "first_name": "John",
      "last_name": "Lennon"
    }
  },
  {
    "model": "myapp.person",
    "pk": 2,
    "fields": {
      "first_name": "Paul",
      "last_name": "McCartney"
    }
  }
]

https://docs.djangoproject.com/en/dev/howto/initial-data/

Model.objects.bulk_create()
在django中运行

from blog.models import Blog
f = open('oldblog.txt')
BlogList = [Blog(title=line.split('****')[0], content=line.split('****')[1]) for line in f]
f.close()
Blog.objects.bulk_create(BlogList)

django-import-export库
使用django-import-export库,导入导出数据,支持csv、xls、json、html等格式

#安装django-import-export
pip install django-import-export

配置settings.py

INSTALLED_APPS = (
	……
    'import_export',
)
#拉取所有的静态文件
python manage.py collectstatic
#在admin.py 创建Resource、对应的Admin,export_order:设置导出字段的顺序
from import_export import resources
from core.models import Book
from import_export.admin import ImportExportModelAdmin


class BookResource(resources.ModelResource):

    class Meta:
        model = Book
        export_order = ('id', 'name', 'author', 'author_email')

@admin.register(Book)
class BookAdmin(ImportExportModelAdmin):
    list_display = ('name', 'author', 'author_email')
    search_fields = list_display
    date_hierarchy = 'date'   
    resource_class = BookResource

支持自定义导出方式

参考:
自强学堂
https://code.ziqiangxuetang.com/django/django-import-data.html
Django import / export实现数据库导入导出
https://www.cnblogs.com/zhaoyingjie/p/9566033.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值