美文网首页
Django - 模型层以及如何通过模型层来建表

Django - 模型层以及如何通过模型层来建表

作者: 桑鱼nicoo | 来源:发表于2020-03-26 11:35 被阅读0次

Django 提供了一个抽象的模型 ("models") 层

  • 什么是模型层?

    • 这里模型的思想与Java中的ORM(Object Relationship Mapping) 对象关系映射类似
    • 模型准确且唯一的描述了数据
    • 它包含要储存的数据的字段
    • 一般来说,每一个模型都映射一张数据库表
  • 如何创建模型?

    • 每个模型都是一个 Python 的类,这些类继承 django.db.models.Model
    • 模型类的每个属性都相当于一个数据库的字段
    • 利用这些,Django 提供了一个自动生成访问数据库的 API,可以通过这些API对数据库进行增删改查
  • Settings.py 文件中增加一些配置

    • INSTALLED_APPS:定义了你的模型后,需要将模型添加到Django,所以需要将包含models的模块名称添加进去
    • DATABASES:数据库连接信息
  • 定义一个Person模型

    • first_name 和 last_name 是模型的 字段
    • 每个字段都被指定为一个类属性,并且每个属性映射为一个数据库列。

代码实例

  1. 当前项目的目录结构
  1. 包含models.py 所在目录名称为:signtest,将它添加到settings.py
  1. settings.py中增加数据库的连接信息(我这里使用的是mysql)
DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'HOST': '127.0.0.1',  # 数据库主机
        'PORT': 3306,  # 数据库端口
        'USER': 'root',  # 数据库用户名
        'PASSWORD': 'abcd123456',  # 数据库用户密码
        'NAME': 'my_dj_test'  # 数据库名字
    }
}
  1. models.py 中增加模型类
from django.db import models 

class Musician(models.Model):
    first_name = models.CharField(max_length=50)  #每个变量对应的是数据库中每个字段
    last_name = models.CharField(max_length=50)
    instrument = models.CharField(max_length=100)

class Album(models.Model):
    artist = models.ForeignKey(Musician, on_delete=models.CASCADE)
    name = models.CharField(max_length=100)
    release_date = models.DateField()
    num_stars = models.IntegerField()
  1. 因为我创建的项目用的是python的虚拟环境,virtualenv就是用来为一个应用创建一套“隔离”的Python运行环境。所以需要安装一些环境的依赖
# 因为我现在的Django版本是3.x会出现一些版本不对应的情况,所以我将版本降到了2.1.7 ,没有这个问题的不需要此操作
$ pip3 install Django==2.1.7 
# Successfully installed Django-2.1.7
# 安装pymysql
$ pip3 install pymysql
# Successfully installed pymysql-0.9.3
  1. 在包含settings.py的目录下的init.py文件中,将下面的代码放进去
import pymysql
pymysql.install_as_MySQLdb()
  1. 先执行数据库迁移的命令 manage.py makemigrations,再执行建表的命令manage.py migrate
$ python3 manage.py makemigrations
Migrations for 'signtest':
  signtest/migrations/0001_initial.py
    - Create model Album
    - Create model Musician
    - Add field artist to album
$ python3  manage.py migrate
Operations to perform:
  Apply all migrations: admin, auth, contenttypes, sessions, signtest
Running migrations:
  Applying contenttypes.0001_initial... OK
# ...
(venv) pengyapandeMacBook-Air:sangyu pengyapan$ 
  1. 进入数据库查看
  1. 到这就里就根据Django模型在数据库建表成功了

  2. 其他的一些命令,可能用不到只是记录下

# 卸载mysqlclient
pip uninstall mysqlclient
# 异常:mysqlclient 1.3.13 or newer is required; you have 0.9.3
# 可能是由于Django版本不一致的问题改成,也可以通过修改/Users/lixiang/.env/lib/python3.6/site-packages/django/db/backends/mysql/base.py 这个文件下的注释掉version < (1, 3, 13)
# 这是在sql中执行的命令的,主要是记录建表信息会记录在这个表django_migrations中
DELETE FROM django_migrations WHERE app='your-app-name';
# 下载依赖时增加版本信息
mysql-connector-python==1.0.12
# 要为应用创建初始迁移,请运行makemigrations并指定应用名称。将创建迁移文件夹
./manage.py makemigrations <myapp>

相关文章

  • Django - 模型层以及如何通过模型层来建表

    Django 提供了一个抽象的模型 ("models") 层 什么是模型层?这里模型的思想与Java中的ORM(O...

  • Django模型层之建表操作

    一 ORM简介 查询数据层次图解:如果操作mysql,ORM是在pymysq之上又进行了一层封装 MVC或者MTV...

  • 基于 Django 框架的敏捷 Web 开发(四)

    实现Django的控制层和表现层 进行到这里,Django工程中的模型层已经处理完成,下面要做的就是如何用代码来与...

  • Python学习打call第五十七天:Django Model

    Django Model 模型 Django Model层是Django的数据模型层,每一个Model类就是数据库...

  • 2018-12-25 Django的MTV模型组织

    Django的MTV模型组织 MTV:数据交互层,视图层以及控制层。 Django觉得MVC的字面意思很别扭,不太...

  • JavaBean

    此前在学习 C# 时,讲到的三层模型,显示层、业务层以及持久层,他们之间是通过和数据库表一一对应的一个模型类( M...

  • Django模型层

    一 . 创建模型层,编写models.py文件 二 . 在settings.py文件的INSTALL_APPS中添...

  • Django模型层

    Django模型 一、基础 每个模型都是一个 Python 的类,这些类继承自 django.db.models....

  • 构建简单的模型(02)

    序列模型 在 Keras 中,您可以通过组合层来构建模型。模型(通常)是由层构成的图。最常见的模型类型是层的堆叠:...

  • OSI-体系结构

    一 OSI七层模型 OSI七层协议模型以及个模型协议 OSI七层协议模型主要是:应用层(Application)、...

网友评论

      本文标题:Django - 模型层以及如何通过模型层来建表

      本文链接:https://www.haomeiwen.com/subject/jocfuhtx.html