Django数据库导入
从网上下载的一些数据,Excel表,xml文件,txt文件等有时候我们想把他们导入数据库,应该如何操作呢?
备注:你可能会问数据从哪里来,比如你用python从以前的blog上获取过来的,想到如现在的博客,或者别人整理好的数据,一个个地从网站后台复制黏贴太麻烦,这就是批量导入的必要性。
建议不要先看源码,按教程一步步做下去,遇到问题再试试源代码,直接复制粘贴,很快会忘记,自己动手打一遍
我们新建一个项目mysite,在新建一个app,名称为blog
django-admin.py startproject mysite
cd mysite/
python manage.py startapp blog
把blog中的models.py更改为以下内容:
from django.db import models
# Create your models here.
class Blog(models.Model):
title = models.CharField(max_length=100)
content = models.TextField()
def __str__(self):
return self.title
不要忘记把blog加入到settings.py中的INSTALLED_APPS中
# Application definition
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'blog', # 添加上blog这个app
]
一、同步数据库,创建相应的表
python manage.py makemigrations
# 看到以下内容:
Migrations for 'blog':
blog/migrations/0001_initial.py
- Create model Blog
student@student-VirtualBox:~/mysite$ python manage.py migrate
# 看到以下内容:
Operations to perform:
Apply all migrations: admin, auth, blog, contenttypes, sessions
Running migrations:
Applying contenttypes.0001_initial... OK
Applying auth.0001_initial... OK
Applying admin.0001_initial... OK
Applying admin.0002_logentry_remove_auto_add... OK
Applying contenttypes.0002_remove_content_type_name... OK
Applying auth.0002_alter_permission_name_max_length... OK
Applying auth.0003_alter_user_email_max_length... OK
Applying auth.0004_alter_user_username_opts... OK
Applying auth.0005_alter_user_last_login_null... OK
Applying auth.0006_require_contenttypes_0002... OK
Applying auth.0007_alter_validators_add_error_messages... OK
Applying auth.0008_alter_user_username_max_length... OK
Applying blog.0001_initial... OK
Applying sessions.0001_initial... OK
二、输入python manage.py shell
进入该项目的django环境的终端
先说说如何使用命令新增一篇文章:
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()
]>
还有两种方法:
blog2 = Blog()
blog2.title = "title 2"