1.ORM介绍
o(bojects):类和对象
R(Relation):关系,关系数据库中的表格
M(Mapping):映射
Django ORM框架和功能:
a.建立模型和表之间的对应关系,允许我们通过面向对象的方式来操作数据库
b.根据设计的模型类生成数据库中的表格
c.通过方便的配置就可以进行数据库的切换
2.数据库的配置
1.创建数据库:
django框架,只能产生数据表,不会自动帮助我们生成mysql数据库,所以我们需要自己去创建
2.django配置使用mysql数据库:
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.sqlite3',
'NAME': BASE_DIR / 'db.sqlite3',
}
}
mysql:中查看数据库有几个的指令: show databases;
进入mysql数据库的指令mysql -uroot -p
退出数据 quit或\q
创建新的数据库:create database web02 charset=utf8;
# 数据库的配置文件
DATABASES = {
'default': {
# django的数据库引擎,更改成mysql
'ENGINE': 'django.db.backends.mysql',
# 数据库中的库名
'NAME': 'webo2',
# 账号
"USER": "root",
# 密码
"PASSWORD": "123456",
# 本机
"HOST": "localhost",
# 端口
"PORT": 3306
}
}
3.安装依赖
django框架使用mysql:需要安装依赖mysqlclient
pip install mysqlclient
3.模型类字
django会为表创建自动增长的主键列,每个模型只能有一个主键列,如果使用选项设置某属性为主键列之后django不会在创建自动增长的主键列
默认创建的主键列属性为id,可以使用pk代替,pk全拼为primary key
1.字段的命名限制
1)不能是python的关键字
2)不允许使用连续的下划线,django 的查询方式有连续的下划线的语法
3)定义字段时需要指定字段的类型,通过字段的参数指定选项,语法如下:
命名属性=model.字段类型(选项)
2.常用的字段类型
使用时需要引入django.db.models包,字段类型如下:
CharField 字符串
id字段是不用定义是会自动生成:
from django.db import models
# Create your models here.
"""
# 新闻类型表:时尚杂志,国际新闻,体育新闻,时事政治。。。。。
news_type
id:主键
name:类型名称 字符串
# 新闻信息表:保存文件的纤细信息
newsinfo表
id:主键
title:标题 字符串
content:内容 text
read:阅读数据 int
comment:品论数量 int
数据表之间的关系:
一对一:
一对多:
多对多:
"""
class NewsType(models.Model):
"""定义新闻类型的模型类"""
# id 会自动生成
name = models.CharField(max_length=20, varbose_name='新闻类型123', help_text='名称123')
class NewsYnfo(models.Model):
"""新闻信息的模型类"""
title = models.CharField(max_length=100, varbose_name='标题123', help_text='标题123')
content = models.TextField(max_length=100, varbose_name='新闻内容123', help_text='新闻内容123')
read = models.IntegerField(verbose_name='阅读量123', help_text='阅读量')
comment = models.IntegerField(verbose_name='评论数量123', help_text='评论数量')
# 维护多对多的关系
type = models.ManyToManyField('NewsType', varbose_name='新闻类型ABC')
def __str__(self):
return self.name