这是大概一年前面试的时候一位面试官问我的问题,后来就一直想要整理一下笔记
写在最前面的小备忘,在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
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