您好,欢迎来到网暖!

当前位置:网暖 » 站长资讯 » 建站基础 » 网络技术 » 文章详细 订阅RssFeed

小麦的django学习之路(二)

来源:网络整理 浏览:209次 时间:2022-11-23

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


推荐站点

  • 腾讯腾讯

    腾讯网(www.QQ.com)是中国浏览量最大的中文门户网站,是腾讯公司推出的集新闻信息、互动社区、娱乐产品和基础服务为一体的大型综合门户网站。腾讯网服务于全球华人用户,致力成为最具传播力和互动性,权威、主流、时尚的互联网媒体平台。通过强大的实时新闻和全面深入的信息资讯服务,为中国数以亿计的互联网用户提供富有创意的网上新生活。

    www.qq.com
  • 搜狐搜狐

    搜狐网是全球最大的中文门户网站,为用户提供24小时不间断的最新资讯,及搜索、邮件等网络服务。内容包括全球热点事件、突发新闻、时事评论、热播影视剧、体育赛事、行业动态、生活服务信息,以及论坛、博客、微博、我的搜狐等互动空间。

    www.sohu.com
  • 网易网易

    网易是中国领先的互联网技术公司,为用户提供免费邮箱、游戏、搜索引擎服务,开设新闻、娱乐、体育等30多个内容频道,及博客、视频、论坛等互动交流,网聚人的力量。

    www.163.com
  • 新浪新浪

    新浪网为全球用户24小时提供全面及时的中文资讯,内容覆盖国内外突发新闻事件、体坛赛事、娱乐时尚、产业资讯、实用信息等,设有新闻、体育、娱乐、财经、科技、房产、汽车等30多个内容频道,同时开设博客、视频、论坛等自由互动交流空间。

    www.sina.com.cn
  • 百度一下百度一下

    百度一下,你就知道

    www.baidu.com