Django教程03-设计Models(使用数据库)

上一篇: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
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容