您的位置:首页 > 编程语言 > Go语言

小麦的django学习之路(二)

2021-02-26 21:50 961 查看

小麦搭建完django后,立马想着加入数据库功能,这样才算完整的web项目,立马开始添加数据库板块:

1.安装数据驱动

继续游荡在官网教程里,小麦安装了django推荐的mysql驱动mysqlclient,windows环境注意,安装最新的mysqlclient可能会出现问题,可以先试一下低版本的,django支持mysqlclient1.3.7+,小麦安装了1.3.12,mysql使用5.7版本

pip install --user mysqlclient==1.3.12


2.修改数据库配置

#mysite/settings

#修改数据库信息
DATABASES = {
   'default': {
       'ENGINE': 'django.db.backends.mysql',
       'NAME': 'mysite',
       'USER': 'root',
       'PASSWORD': 'Mysite2018.',
       'HOST': '192.168.0.1',
       'PORT': '3306',
   }
}

#修改时区
TIME_ZONE = 'Asia/Shanghai'


3.添加我们自己模型model

#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里的实体都是继承自models.Model,一个class映射成数据库的一个表,每个字段映射成表的column。models的Field函数,你可以用第一个可选的参数,来指定此字段的注释,比如pub_date字段定义。

CharField你需要指定最大长度,不仅用于数据库表字段定义,也用于字段长度校验。同时,django也支持数据库的关联关系,一对一,一对多,多对多。


4.激活我们的实体model

django中app是可插拔的,一个app可以被多个项目引用,当然,app只有被install到指定项目中,才可生效。找到我们的应用polls下的app.py,将app信息install到mysite的settings中:

#安装应用mysite/settings.py

INSTALLED_APPS = [
   'polls.apps.PollsConfig',
   'django.contrib.admin',
   'django.contrib.auth',
   'django.contrib.contenttypes',
   'django.contrib.sessions',
   'django.contrib.messages',
   'django.contrib.staticfiles',
]

接下来我们为新增的实体生成迁移文件,

python manage.py makemigrations polls

此时只是生成django可理解执行的迁移文件,还没有执行数据库操作,我们可以通过执行日志看到:

刷新项目可以看到, polls/migrations/0001_initial.py文件生成,这里我们可以进行最后的微调,确认无误便可以生成数据库schema。

执行迁移文件:python manage.py sqlmigrate polls 0001

可以看创建sql语句了,但现在仍然没有创建数据库,只是发出我们熟悉的sql语句,注意这里是用的mysql,其他数据库可能有些差异。建表时django会给表加上应用前缀,表的主键id会自动生成,外键也会自动添加,当然这些都是自己可以调整的。


现在执行迁移文件:python manage.py migrate

现在数据库表创建完成了,Migrations非常强大,你的实体改动,只需要重新生成Migrations,然后执行migrate,小麦看着数据库表,只要三步,表数据变更方面就完全搞定,貌似比mybatis还要方便:

Change your models (in models.py).

Run python manage.py makemigrations to create migrations for those changes

Run python manage.py migrate to apply those changes to the data


内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: