django模型系统一
django模型系统一
1.数据库的连接配置
- django连接mysql的配置流程
- 安装pymysql ** pip install pymysql
- 修改配置
- 修改setting的配置文件
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'crm',
'USER': 'root',
'PASSWORD': 'qwe123',
'HOST': '127.0.0.1',
'PORT': '',
}
} - 在setting的同级目录下的__init__.py文件中写上 import pymysql pymysql.install_as_MySQLdb()
- 修改setting的配置文件
- 设置时区:
- 设置setting里面的TIME_ZONE = 'Asia/Shanghai'
2.django的ORM系统
- ORM: 对象关系映射(Object Relational Mapping),是一种程序技术,用于实现面相对象编程语言里的不同类型系统的数据之间的转换。用面相对象的方式描述数据库,操作数据库,用不用编写sql语句就能对数据库进行操作。
- django模型的映射关系:
- 模型类 → 数据表
- 类属性 → 表字段名
- 模型类必须写在app下的models.py中
- 模型如果需要映射到数据库,所在的app必须被安装
- 一个数据库对应一个模型类,表中的字段,对应模型的类属性
3.模型的创建与激活
- 模型的创建
from django.db import models # Create your models here. class Student(models.Model):
name = models.CharField(max_length=20)
age = models.SmallIntegerField(default=0)
sex = models.SmallIntegerField(default=1)
ctime = models.DateTimeField(verbose_name='创建时间', auto_now_add=True)在app目录下的models.py中创建模型类,该类继承models.Model,数据库的字段为该类的属性名。
- 每一个模型都是django.db.models.Model的子类的
- 类变量 表示模型中的数据库的字段
- 每一个字段有一个字段类的实例来表示
- 模型的激活
- 在项目中注册app(使用pycharm创建app的会自动配置)
- 运行数据库迁移命令
- python manage.py makemigrations <项目名>
- --告诉django,我们做了哪些的数据库的修改,准备迁移
- 该命令会在app目录下的migrations目录下生成py文件
- sqlmigrate: -- 从迁移获取sql语句
- --告诉django,我们做了哪些的数据库的修改,准备迁移
- python manage.py makemigrations <项目名>
- 运行migrate命令,使迁移生效
- python manage.py sqlmigrate <app_name> 0001_initial.py(生成的py文件)
- 该命令会在数据库中创建表
python manager.py migrate <app_name> // app_name如果不写则默认应用所有
4.数据的增删改查
- 工具: django shell 调试工具
- python manager.py shell
- 配合ipython使用
- python manager.py shell
- 进入models环境
- from crm(app_name).models import Student(创建的类名)
- 查
- Student.object.all()
- 返回一个queryset的对象
- s = Student.object.all()
- s.query
- 返回一个django.db.models.sql.query.Query的对象
- 其__str__方法返回的结果为 select * from Student // * 为所有的字段
- ----------------------------
- Student.object.get(id=1)
- 可通过条件查询,返回类的对象
- 当get查询到多个值得时候会报错,所以get一般和主键搭配使用
- 主键可以直接用变量pk代替
- Student.object.count()
- 返回总的数量
- ----------------------------
Student.object.get(name='ivy')
- Student.object.all()
- 增
- s1 = Student(name='ivy', age=2,)
- 先实例化一个Student对象
- s1.save()
- 保存到数据库里
- -------------------------------------
- s2 = Student()
- 直接实例化对象
- s2.name = 'bob'
- s2.age = 10
- s2.save()
- -------------------------------------
- s3 = Student.objects.create(name='summer', age=23)
- 该方法直接操作数据库
- 返回一个类的对象
- -------------------------------------
- s4 = Student.objects.get_or_create(name='ivy')
- 该方法会直接操作数据库
- 返回一个元祖
- 第一元素为类的对象
- 第二个元素为bool值,如果s4已经存在,则bool值为False,如果为创建而来,则是True
- 改
- 直接对对象直接重新赋值
- update方法
- Student.objects.filter(name='ivy').update(age=20)
- 删
- delete方法
- Student.objects.filter(name='ivy').delete()
- delete方法
django模型系统一的更多相关文章
- django模型详解(四)
1 概述 (1)概述 : Django对各种数据库提供了很好的支持,Django为这些数据库提供了统一的调用API,根据不同的业务需求选择不同的数据库 (2)定义模型 模型,属性,表,字段间的关系 一 ...
- Django模型层之单表操作
Django模型层之单表操作 一 .ORM简介 我们在使用Django框架开发web应用的过程中,不可避免地会涉及到数据的管理操作(如增.删.改.查),而一旦谈到数据的管理操作,就需要用到数据库管理软 ...
- [原创]django+ldap实现统一认证部分二(python-ldap实践)
前言 接上篇文章 [原创]django+ldap实现统一认证部分一(django-auth-ldap实践) 继续实现我们的统一认证 python-ldap 我在sso项目的backend/lib/co ...
- [原创]django+ldap实现统一认证部分一(django-auth-ldap实践)
前言 接之前我的文章,django+ldap+memcache实现单点登录+统一认证 ,ldap部署相关,ldap双机\LAM配置管理\ldap备份还原,目前来说,我们已经有了高可用性的ldap环境了 ...
- Django模型层Meta内部类详解
Django 模型类的Meta是一个内部类,它用于定义一些Django模型类的行为特性.以下对此作一总结: abstract 这个属性是定义当前的模型类是不是一个抽象类.所谓抽象类是不会对应 ...
- django模型
用django时,只要用到数据库就得用到模型. 一.数据库的MTV开发模式 从MVC到MTV 所谓软件架构的MVC模式将数据的存取逻辑(Module),表现逻辑(View)和业务逻辑(Controll ...
- 【Python】django模型models的外键关联使用
Python 2.7.10,django 1.8.6 外键关联:http://www.bubuko.com/infodetail-618303.html 字段属性:http://www.cnblogs ...
- django模型中的抽象类(abstract)
首先介绍下django的模型有哪些属性:先看例子: Django 模型类的Meta是一个内部类,它用于定义一些Django模型类的行为特性.以下对此作一总结: abstract 这个属性是定义当前的模 ...
- Django模型之Meta选项详解
Django模型类的Meta是一个内部类,它用于定义一些Django模型类的行为特性.而可用的选项大致包含以下几类 abstract 这个属性是定义当前的模型是不是一个抽象类.所谓抽象类是不会对应数据 ...
随机推荐
- Index.get_indexer 方法的含义
表示,to_match 中的字符,在 unoque_vals 中的位置索引
- Jellyfish详解
一.Jellyfish简介 JELLYFISH是CBCB(Center for Bioinformatics and Computational Biology)的Guillaume Marçais ...
- WordCount基本功能
WordCount基本功能 码云地址:https://gitee.com/Joker_zou/WordCount.git 一.项目需求 WordCount的需求可以概括为:对程序设计语言源文件统计字符 ...
- yii框架通过http协议获取地址栏中的内容
//创建一个控制器 <?php namespace frontend\controllers; use frontend\models\Zhuce; use Yii; use yii\web\C ...
- React文档(八)条件渲染
在React中,你可以创建不同的组件各自封装你需要的东西.之后你可以只渲染其中的一部分,这取决于应用的state(状态). 条件渲染在React里就和js里的条件语句一样.使用js里的if或者条件表达 ...
- 在Visual Studio 2017中安装bower
在项目目录下添加一个文件.bowerrc { "directory": "wwwroot/lib" } JS包默认安装到webroot的lib文件夹,可以通过. ...
- 给学习Linux系统小白的两三个建议
前段时间看过一个针对国内Linux使用情况的调研表,有了不少感慨.现在听说过linux,会一点linux基本操作的人多如牛毛,然而真正能用linux做一点事情的确少之又少.无论是公司还是学校,办公基本 ...
- 查看apk文件包名的一些方法
1,如果有源码 直接将apk包修改为zip,并解压找到AndroidManifest.xml文件,在文件中搜索“package”找到相应的包名 2,使用adb命令 前提是已经下载android SDK ...
- day32-python阶段性复习六
面向对象编程的一种方法一些皆对象面向过程和面向对象编程面向过程编程:函数式编程.c等面向对象编程:c++ ,java,python等看具体问题用哪种方法 类和对象:是面向对象中的两个重要的概念类:是对 ...
- java service 安装
sudo ln -s /var/services/video/video-live.jar /etc/init.d/live-service sudo chmod +x /var/services/v ...