AI智能
改变未来

小麦的django学习之路(二)

小麦搭建完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

赞(0) 打赏
未经允许不得转载:爱站程序员基地 » 小麦的django学习之路(二)