上一篇:Django教程02-使用模板templates
下一篇:Django教程04-Models的常用操作
1.数据库的注册
首先要在settings.py文件进行数据库的设定
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql', # Add 'postgresql_psycopg2', 'mysql', 'sqlite3' or 'oracle'.
'NAME': 'test', # 数据库名称,如果使用sqlite3,则输入数据库文件路径,如'/home/django/mydata.
'USER': 'root', # Not used with sqlite3.
'PASSWORD': 'admin', # Not used with sqlite3.
'HOST': '', # Set to empty string for localhost. Not used with sqlite3.
'PORT': '', # Set to empty string for default. Not used with sqlite3.
}
}
默认情况的设置如下
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.sqlite3',
'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
}
}
2.在app的models.py文件中创建model子类
from django.db import models
# Create your models here.
class Article(models.Model):
title = models.CharField(max_length=30)
content = models.CharField(max_length=500)
def __str__(self):
return self.title
3.然后在settings.py中注册你的app
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'home',#这个是自己要注册的app
]
4.验证你的model设置
python manage.py check
5.通过model类定义来创建数据库表
1)python manage.py的相关命令
- migrate: 用于执行迁移动作
- makemigrations: 基于当前的model创建新的迁移策略文件
- sqlmigrate: 显示迁移的SQL语句
参考:Django 1.7 新数据迁移工具 (migrations) 的使用# Django 1.7 新数据迁移工具 (migrations) 的使用
2)针对具体应用
上述的三个命令,都可以指定具体的app和实例
例如:
python manage.py migrate home # 针对home应用进行迁移
python manage.py migrate home 0002 #针对home应用的0002实例
home应用的0002实例,对应home文件夹——migrations文件夹下,0002_****.py
3)创建表格
首先,产生home应用的migration文件
python3 manage.py makemigrations home

image.png
执行该命令后,在home应用的文件夹下,生成migrations文件夹,并生成第一个迁移实例0001_initial.py
然后,执行迁移命令
python3 manage.py migrate home

image.png
执行0001_initial.py,执行后,数据库中生成home_Article表格,也就是对应home应用的Article模块。
显示sql相关操作
python manage.py sqlmigrate home 0001

image.png
6.初始化表格数据
有两种方式可以实现对数据库表格的初始化
(1)利用shell
python manage.py sqlshell
进入sql数据库的命令行管理模式。

image.png
from home.models import Article
从home应用的models.py中导入刚定义的Article子模型,后续即可进行相关赋值操作
def initdata():
data = [('春节放假通知','春节放假通知内容'),('习近平访问美国','习近平访问美国详情'),('96台海危机','96台海危机详情')]
for d in data:
p = Article(title=d[0],content=d[1])
p.save()
initdata()
可以把这一过程放在一个文件中实现:
initdb.py
from mysite.wsgi import * #需要通过这个,导入Django的一些初始设置,否则会失败
from home.models import Article
def initdata():
data = [('春节放假通知','春节放假通知内容'),('习近平访问美国','习近平访问美国详情'),('96台海危机','96台海危机详情')]
for d in data:
p = Article(title=d[0],content=d[1])
p.save()
if __name__=='__main__':
initdata()
把该文件命名为initdb.py,放在项目根目录中,然后python initdb.py执行。
(2)利用migration
在应用的migrations文件夹中,新建文件0002_initialdata.py
# -*- coding: utf-8 -*-
# Generated by Django 1.11.3 on 2017-07-02 02:59
from __future__ import unicode_literals
from django.db import migrations, models
def initdata(apps, schema_editor):
Article = apps.get_model("home", "Article")
data = [('春节放假通知','春节放假通知内容'),('习近平访问美国','习近平访问美国详情'),('96台海危机','96台海危机详情')]
for d in data:
p = Article(title=d[0],content=d[1])
p.save()
class Migration(migrations.Migration):
dependencies = [
('home', '0001_initial'), #依赖关系的定义。如果没有,会出现冲突。
]
operations = [
migrations.RunPython(initdata),
]
执行迁移命令:
python manage.py migrate home 0002

image.png
执行完成后,数据表结果如下:

image.png