Django框架基础知识06-模型基础
1.数据库的连接配置 django 连接mysql的配置流程:
安装 pymysql pip install pymysql
创建数据库用户 有创建数据库权限的用户
创建数据库 crm
修改配置 settins
修改项目文件夹(和settings.py文件所在的目录)下 init.py 文件 写上:
import pymysql pymysql.install_as_MySQLdb()
设置时区 TIME_ZONE = 'Asia/ShangHai' # 北京时间
2.django的ORM系统 -对象关系映射(Object Relational Mapping,简称ORM)! 简单的说就是用面向对象的方式,描述数据库,操作数据库, 达到不用编写SQL语句就能对数据库进行增删改查。
3.模型的创建与激活
创建模型 Student的模型,代表学生
总结: 1. 每一个模型都是django.db.models.Model的子类
2. 类变量 表示模型中的数据库字段
3. 每一个字段有一个字段类的实例表示如Charfield,DateTimeField
激活模型 1.在项目中注册app
2.运行数据库迁移命令(一定要在项目根目录下)
python mange.py makemigrations teacher 告诉django,我们做了哪些数据库的更改 迁移
sqlmigrate 从迁移获取sql语句
--
-- Create model Student
CREATE TABLE teacher_student
( id
integer AUTO_INCREMENT NOT NULL PRIMARY KEY, #自动创建主键 name
varchar(20) NOT NULL, age
smallint NOT NULL, sex
smallint NOT NULL, qq
varchar(20) NOT NULL, phone
varchar(20) NOT NULL, c_time
datetime(6) NOT NULL); COMMIT;
3.运行migrate命令,
使迁移生效 python manage.py migrate
表名是appname_模型name.lower
4.数据的增删改查 -工具 djang shell 调试工具 python manage.py shell
django模型映射关系:
实例就是对应数据表中的一条数据.
模型类必须都写在app下的models.py文件中。
模型如果需要映射到数据库,所在的app必须被安装.
一个数据表对应一个模型类,表中的字段,对应模型中的类属性.
数据库的配置:
安装pymysql :pip install pymysql
1.在settings.py中配置DATABASES
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql', # 数据库引擎
'NAME': 'mydb', #数据库名称
'USER': 'admin', # 链接数据库的用户名
'PASSWORD': 'Root110qwe', # 链接数据库的密码
'HOST': '127.0.0.1', # mysql服务器的域名和ip地址
'PORT': '3306', # mysql的一个端口号,默认是3306,官网上都是字符串.
}
}
创建一个管理员用户taka账号,密码为 taka:
CREATE USER 'taka'@'%'IDENTIFIED BY 'taka';
给这个用户授予所有远程访问,这个用户主要用于管理整个数据库,备份,还原等操作。
GRANT ALL ON . TO 'taka'@'%';
使授权立即生效:
FLUSH PRIVILEGES;
pymsql数据库连接器的配置:
在虚拟环境中安装pymysql:
pip install pymysql
设置连接器为pymysql:
在主目录下的的init.py文件添加下面两句
import pymysql
pymysql.install_as_MySQLdb()
设置时区 TIME_ZONE = 'Asia/ShangHai'
使用django中的模型:
1.在app下面的models.py中创建django的模型类.
例子:
from django.db import models
# Create your models here.
class Students(models.Model):
name = models.CharField(max_length=20) #必须有这个参数
age = models.SmallIntegerField(default=18)
sex = models.SmallIntegerField(default=1)
qq = models.CharField(max_length=20,default='')
phone = models.CharField(max_length=20,default='')
c_time = models.DateTimeField(verbose_name='创建时间',auto_now_add=True) #自动添加参数
将模型类映射到数据库:
1.首先执行以下命令,要创建映射文件
python manage.py makemigrations #命令后面可以跟app名称,表示指定对某个app的模型进行映射,没写所有的app都执行.在项目根目录下
2.执行以下命令,将映射文件中的映射数据提交到数据库中
python manage.py migrate
在执行前,保证我们创建模型的APP是已经注册过的APP
将模型类映射到数据库:
打开数据我们能看到创建的以app名_模型名的数据表,而其他的一些表格是django自动生成的.
注意:如果要删除表,那么可以去django模型中注释掉模型类,然后执行映射的命令,不要手动在命令行里面去删除.
数据的增删改查----------增加数据
1.在视图函数中导入User模型类,然后使用下面的方法添加数据
数据的增删改查----------查找数据
2.在视图函数中导入User模型类,实现简单的查找
objects是django.db.models.manager.Manager 管理器.
通过print可以在后台看到我们访问到的数据,并且输出方式就是模型中的str的格式.
all()和filter()方法返回的是QuerySet对象,是查询集.
get()方式返回的单个对象,如果符合条件的对象有多个,则get报错!
get_or_create()返回的是一个元组,第一个参数是数据,第二个参数是返回是否创建成功.
数据的增删改查--------数据库相关的接口(QuerySet API)
1.从数据库中查询出来的结果一般是一个集合,这个集合叫做 QuerySet.
2.QuerySet是可迭代对象.
3.QuerySet支持切片, 不支持负索引.
4.可以用list强行将QuerySet变成列表.
数据的增删改查----------修改数据
3.在视图函数中导入User模型类,然后使用下面的方法更新数据
在这之前,我们在模型类中添加了一个city的属性,并设置了一个默认值,然后执行了映射命令,将字段成功映射到了数据库中.
数据的增删改查----------删除数据
4.在视图函数中导入User模型类,然后使用下面的方法删除数据
某个对象是否有某种方法,可以通过dir(obj)来进行查看.
装饰器调用加括号与不加括号的实现,内层加一层装饰器代码,判断是否可调用函数,从而实现脱去了外层的括号
def log(func=None):
def wrapper(fun):
def inner(args,kwargs):
print('do something')
res = fun(args,kwargs)
print('do something')
return res
return inner
if func is None:
return wrapper
elif callable(func):
return wrapper(func)
@log() #my_func = log()(my_func) 对应第一条判断
@log #my_func = log(my_func) 对应第二条判断
def my_func():
print('i am my_func')
django shell
python manage.py shell
from teacher.models import Student
Student.objects.all()
s1 = Student(name='王超',age=25,qq='12345')
s1.save()
在类里面定义Student.objects.all()的输出 def --str--(self):
return '%s-%s'%(self.name,self.age)
res = Students.objects.all()
print(res.query) #返回一个sql语句.
Student.object.get(pk=1) #pk代表了主键,不管其实际名称是什么.这么写就一定没错.
Student.object.filter(name='王超').update(age=18),可修改多条
s.age=18
s.save() 直接修改
Django框架基础知识06-模型基础的更多相关文章
- day01<计算机基础知识&Java语言基础>
计算机基础知识(计算机概述) 计算机基础知识(软件开发和计算机语言概述) 计算机基础知识(人机交互) 计算机基础知识(键盘功能键和快捷键) 计算机基础知识(如何打开DOS控制台) 计算机基础知识(常见 ...
- Django框架 之 ORM中介模型
Django框架 之 ORM中介模型 中介模型 处理类似搭配 pizza 和 topping 这样简单的多对多关系时,使用标准的ManyToManyField 就可以了.但是,有时你可能需要关联数据 ...
- PHP丨PHP基础知识之PHP基础入门——函数「理论篇」
前两天讲过PHP基础知识的判断条件和流程控制,今天来讲讲PHP基础知识之PHP基础入门--函数! 一.函数的声明与使用 1.函数名是标识符之一,只能有数字字母下划线,开头不能是数字. 函数名的命名,须 ...
- django框架预备知识
内容: 1.web预备知识 2.django介绍 3.web框架的本质及分类 4.django安装与基本设置 1.web预备知识 HTTP协议:https://www.cnblogs.com/wyb6 ...
- Django 框架 基本知识
一.什么事web框架 框架,即framework,特指为解决一个开放性问题而设计的具有一定约束性的支持结构,使用框架可以使我们快速开发特定的系统,简单来说,就是讲实现方式的底层结构进行封装,提供相应的 ...
- [Python] Django框架入门2——深入模型
说明: 本文主要深入了解模型(models.py),涉及ORM简介.模型定义.模型成员.模型查询.自连接等.需要一定基础,可以先走一走基本入门流程. 附录一使用mysql数据库,附录二Django开发 ...
- django基础知识之模型查询:
查询集表示从数据库中获取的对象集合 查询集可以含有零个.一个或多个过滤器 过滤器基于所给的参数限制查询的结果 从Sql的角度,查询集和select语句等价,过滤器像where和limit子句 接下来主 ...
- django 数据库配置 ,APP 迁移.模型基础
# 1.数据库的连接配置django 连接mysql的配置流程:- 安装 pymysql pip install pymysql- 创建数据库用户有创建数据库权限的用户- 创建数据库crm .进入数据 ...
- 关于CSS你应该知道的基础知识 - 盒模型篇
浏览器渲染引擎通过盒模型的方式来布局html元素.我们可以将每一个html元素都看做是一个盒子,每一个盒子都有长和款,多个这样的盒子组成了我们的网页. Margin,Border,Padding 每一 ...
随机推荐
- 笔记-JavaWeb学习之旅2
数据库的基本概念 1.数据库:DataBase 简称 DB,用于存储和管理数据的仓库 特点: 1.持久化存储数据的,其实数据库就是一个文件系统, 2.方便存储和管理数据 3.使用了统一操作数据库 -- ...
- Contest Hunter 0103最短Hamilton路径 【状压dp】 By cellur925
题目传送门 Hamilton路径的定义:从0(起点)到n-1(终点)不重不漏地经过每个点恰好一次. 由于数据范围非常小,考虑状压.如NOIP2017宝藏一题,把状态压缩设为n个点是否已到达的二进制数. ...
- spring cloud feign 调用接口报错"No message available
There was an unexpected error (type=Internal Server Error, status=500). status 404 reading HelloServ ...
- SpringMVC中Freemarker获取项目根目录
https://blog.csdn.net/whatlookingfor/article/details/51538995 在SpringMVC框架中使用Freemarker试图时,要获取根路径的方式 ...
- 141 Linked List Cycle 环形链表
给定一个链表,判断链表中否有环.补充:你是否可以不用额外空间解决此题?详见:https://leetcode.com/problems/linked-list-cycle/description/ J ...
- 分享一个实用任意路数PWM函数
一.什么是PWM? 1.科普一下什么是PWM,嘿嘿,莫闲啰嗦,好好看看,可能大多数人听过,但可能没详细了解过,至此不妨花费几分钟,详细了解哈,PWM中文译名为:脉冲宽度调制,即控制电路在输出频率不变的 ...
- poj3252Round Numbers
链接 也算是组合 以前按组合做过一次 忘记怎么做的了 这次按dp写的 dp[i][j][g][k] 表示第i位为k(0|1)而且有j个1,g个0的情况数 貌似写的麻烦了...这一类的题,进行逐位计算就 ...
- AJPFX关于java的依赖 关联 聚合的关系解释
依赖: 两个相对独立的系统,当一个系统要构筑另一个系统的实例,或者依赖另一的服务时,这两个就是依赖关系.比如自行车和打气筒之间就是依赖关系.代码表现形式如下: public class A{ ...
- 使用kubeadm安装kubernetes v1.14.1
使用kubeadm安装kubernetes v1.14.1 一.环境准备 操作系统:Centos 7.5 ⼀ 一台或多台运⾏行行着下列列系统的机器器: Ubuntu 16.04+ Debi ...
- HttpMessageNotWritableException异常解决办法
昨天做多对多的时遇到这个错误,网上找了一大堆,都没有解决掉,这个异常是说要解析的对象解析不了,就有可能该对象为null了,为了测试,我把数据库的数据都填上去 结果还是报错 看来是时候debug下 ...