Django 数据库导入
从网上下载的一些数据,excel表格,xml文件,txt文件等有时候我们想把它导入数据库,应该如何操作呢?
以下操作符合 Django版本为 1.6 ,兼顾 Django 1.7, Django 1.8 版本,理论上Django 1.4, 1.5 也没有问题,没有提到的都是默认值
备注:你可能会问数据从哪儿来的,比如你用python从以前的blog上获取过来的,想导入现在的博客,或者别人整理好的数据,或者你自己整理的excel表,一个个地在网站后台复制粘贴你觉得好么?这就是批量导入的必要性。
建议先不要看源码,按教程一步步做下去,遇到问题再试试源代码,直接复制粘贴,很快就会忘掉,自己动手打一遍
我们新建一个项目mysite,在新建一个app,名称为blog
django-admin.py startproject mysite
cd mysite
python manage.py startapp blog
把blog中的models.py更改为一下内容
#!/usr/bin/python
#coding:utf-8
from django.db import models
class Blog(models.Model):
title = models.CharField(max_length=100)
content = models.TextField()
def __unicode__(self):
return self.title
不要忘了把blog加入到settings.py中的INSTALLED_APPS中。
# Application definition
INSTALLED_APPS = (
...
# 添加上 blog 这个 app
'blog',
)
一、同步数据库,创建相应的表
python manage.py syncdb
Django 1.6以下版本会看到:
Django创建了一些默认的表,注意后面哪个红色标记的blog_blog是appname_classname的样式,这个表是我们自己写的Blog类创建的
Django 1.7.6及以上的版本会看到:(第六行即创建了对应的blog_blog表)
Operations to perform:
Synchronize unmigrated apps: blog
Apply all migrations: admin, contenttypes, auth, sessions
Synchronizing apps without migrations:
Creating tables...
Creating table blog_blog
Installing custom SQL...
Installing indexes...
Running migrations:
Applying contenttypes.0001_initial... OK
Applying auth.0001_initial... OK
Applying admin.0001_initial... OK
Applying sessions.0001_initial... OK
You have installed Django's auth system, and don't have any superusers defined.
Would you like to create one now? (yes/no): yes
Username (leave blank to use 'tu'): wulaoer
Email address:
Password:
Password (again):
Superuser created successfully.
二、输入python manage.py shell
进入该项目的django环境的终端(windows如何进入对应目录?看Django环境搭建的3.2部分)
先说说如何使用命令新增一篇文章:
$ python manage.py shell
>>> from blog.models import Blog
>>> Blog.objects.create(title="The first blog of my site",
content="I am writing my blog on Terminal")
这样就新增了一篇博文,我们查看以下
>>> Blog.objects.all() # 获取所有blog
[]
还有两种方法(这两种差不多):
>>> blog2 = Blog()
&