Django数据导入

我们先新建一个项目和一个app

django-admin startproject mysite

cd mysite

django-admin startapp blog

然后修改blog/models.py:

from django.db import models

class Blog(models.Model):
    title=models.CharField(max_length=100)
    content=models.TextField()

    def __unicode__(self):
        return self.title

不要忘了在mysite/settings.py添加app
INSTALLED_APPS=(
...
‘blog’,
)

最后同步数据库:

python manage.py makemigrations

python manage.py migrate

一 单项数据导入

终端打开shell

python manage.py shell

然后输入:

from blog.models import Blog

单项数据导入的方式有4种:

1、导入方式1

Blog.objects.create(title=’title 1’,content=’content 1’) 

2、导入方式2

blog=Blog()

blog.title=’title 2’

blog.content=’content 2’

blog.save()

3、导入方式3

blog=Blog(title=’title 3’,content=’content 3’)

blog.save()

4、导入方式4

Blog.objects.get_or_create(title=’title 4’,content=’content 4’)

其中第四种方法可以避免重复导入数据。

二 批量导入数据

一项一项导入数据的效率太慢了,如果需要导入大量的数据,那可能需要大量的人工和时间!!像这种重复性的作业,自然是少不了Python

假如我们的数据是这样的:

data.txt:

title1,content1

title2,content2

title3,content3

...

title100,content100

那么我们把data.txt放在mysite文件夹下.同时新建一个Python脚本:

1、批量导入方式1:

txt2db.py

# !/usr/bin/env python

import os
os.environ.setdefault('DJANGO_SETTINGS_MODULE','datain.settings')

"""
#看教程的时候说,如果django的版本大于1.7,则需要django.setup(),但#是我注释了语句还是成功了。

import django
if django.VERSION >=(1,7):
    django.setup()
"""

def main():
    from blog.models import Blog
    f=open('data.txt')
    for line in f:
        title,content=line.split(',')
        Blog.objects.get_or_create(title=title,content=content)
    f.close()

if __name__=='__main__':
    main()
    print 'Done!'


然后运行python txt2db.py,导入成功!


2、批量导入方式2

也可以使用Blog.objects.Bulk_create():

# !/usr/bin/env python

import os
os.environ.setdefault('DJANGO_SETTINGS_MODULE','datain.settings')
"""
import django
if django.VERSION >=(1,7):
	django.setup()
"""
def main():
	from blog.models import Blog
	f=open('data.txt')
        blogList=[]
	for line in f:
		title,content=line.split(',')
		blog=Blog(title=title,content=content)
                blogList.append(blog)
	f.close()
        Blog.objects.Bulk_create(blogList)

if __name__=='__main__':
	main()
	print 'Done!'


你可能感兴趣的:(django,Python)