Django中数据库的使用和配置文件
作者:向前的步伐 / 发表: 2019年7月20日 23:53 / 更新: 2019年7月20日 23:56 / django / 阅读量:607
数据库的配置
打开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中的更改同步到数据库中。