个人博客

Django中数据库的使用和配置文件

数据库的配置

打开mysite/settings.py文件,这里面包含了Django项目的配置信息,可以找到数据库的配置项:

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.sqlite3',
        'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
    }
}

通常Django配置文件使用SQLite作为默认的数据库。python内置SQLite,所以你无需安装额外的模块来使用它,这是最简单的一个选择,当然你也可以选择你属性的Mysql数据库,只需要在配置中修改为你需要的配置信息就可以使用。

ENGINE可选值有'django.db.backends.sqlite3','django.db.backends.postgresql','django.db.backends.mysql',或 'django.db.backends.oracle'。

NAME数据库名称,如果使用的是SQLite,数据库将是你电脑上的一个文件,在这种情况下,NAME应该就是这个文件的路径,包括文件名。默认值 os.path.join(BASE_DIR, 'db.sqlite3') 将会把数据库文件储存在项目的根目录。

如果你不使用SQLite,则必须添加一些额外的信息,比如USER、PASSWORD、HOST等等。

在mysite/settings.py文件中,将TIME_ZONE设置为自己的时区,TIME_ZONE = 'Asia/Shanghai'。

此外可以看下INSTALLED_APPS配置信息,这里包含了你项目中所有的Django应用:

INSTALLED_APPS = [
    'django.contrib.admin',    # 管理员站点
    'django.contrib.auth',    # 认证授权系统
    'django.contrib.contenttypes',    # 内容类型框架
    'django.contrib.sessions',    # 会话框架
    'django.contrib.messages',    # 消息框架
    'django.contrib.staticfiles',    # 管理静态文件的框架
    'polls',    # 自己新建的应用
]

我们可以通过命令,在数据库中创建这些应用的数据表,如:

python manage.py migrate

这个migrate命令检查INSTALLED_APPS设置中的应用,为每个需要应用创建需要的数据表。

创建模型

在Django里写一个数据库驱动的wen应用的第一步就是定义模型,也就是创建数据库结构。

这些通过我们在polls/models.py文件中定义我们需要的数据表和字段,可以写入如下代码:

# polls/models.py
from django.db import models

class Question(models.Model):
    question_text = models.CharField(max_length=200)
    pub_date = models.DateTimeField('date published')

class Choice(models.Model):
    question = models.ForeignKey(Question, on_delete=models.CASCADE)
    choice_text = models.CharField(max_length=200)
    votes = models.IntegerField(default=0)

每个模型都为django.db.models.Model类的子类。每个模型都有一些类变量,它们都表示数据库里面一个字段。

每个字段都是一个Field类的实例,比如:字符字段被表示为CharField,日期时间字段被表示为DateTimeField。

定义某些Field类实例也需要参数,例如CharField需要一个max_length参数,用来定义字符字段的最大长度。

注意,我们在Choice类中使用ForeignKey定义了一个关系,这将告诉Django,每个Choice对象都关联到一个Question对象。Django 支持所有常用的数据库关系:多对一、多对多和一对一。

激活模型

在包含polls应用的项目中,执行命令:

python manage.py makemigrations polls

你可以看到类似下面的输出:

Migrations for 'polls':
    polls/migrations/0001_initial.py:
        - Create model Choice
        - Create model Question
        - Add field question to choice

通过运行makemigrations命令,Django会检查你对模型的修改,并且把修改的部分存储为一次迁移。

迁移是Django对于模型定义的变化做的存储形式,它们是存储在你磁盘上的一些文件,它被存储在polls/migrations/0001_initial.py里。

我们也可以使用命令查看迁移具体执行的是哪些SQL语句,这时我们可以使用sqlmigrate命令:

python manage.py sqlmigrate polls 0001

这是展示在终端面前的,将是在执行迁移同步的时候,执行的SQL语句。

现在我们执行数据库迁移和同步管理数据库结构命令:

python manage.py migrate

这个migrate命令选中所有还没有执行过迁移过的变动更新到应用的数据库上,也就是models.py中的更改同步到数据库中。

相关标签
回到顶部