上次我们讲完了views视图,那我们这次来看一下Django强大的ORM,可以这么说,你不懂Django的ORM,你就不懂Django,那废话不多说  

  ORM又称关系对象映射,在ORM里,一张表就是一个类,一行数据就是类的一个对象

  在Django中遵循code first的原则,即:根据代码中定义的类来自动生成数据库表

  利用ORM来实现定义表,以及对表进行操作

  注意:在连接数据库上,Django默认是连接MySQLdb的,但是在python3中,不是很完美的支持这个模块,所以创建的Django项目时,如果python版本为3时,则要在项目名下的init文件里加入下面的代码,如果运行过程中,报错no module named MySQLdb,那就是这个原因了

import pymysql
pymysql.install_as_MySQLdb()

  另外,Django里的连接方式默认为连接sqllite,如果想切换成其他的连接方式,比如连接MySQL,只需要在配置文件里settings,注释之前的,重新配置新的即可

#默认数据库连接
# DATABASES = {
# 'default': {
# 'ENGINE': 'django.db.backends.sqlite3',
# 'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
# }
# } #重新配置数据库连接
DATABASES = {
'default': {
#MySQL的数据库引擎
'ENGINE': 'django.db.backends.mysql',
'NAME':'django_com',
'USER':'root',
'PASSWORD':'', }
}

  注意:NAME数据库的名字,在mysql连接前,该数据库必须已经创建,而上面的sqlite数据库下的db.sqlite则是在创建项目时自动创建的

  pycharm也支持表格显示数据库数据

  为了能更好的查看数据同步,我们可以直接用pycharm查看的,跳过第三方数据库操作软件Navicate,只需要在pycharm安装相应的数据库驱动即可,具体做法如下:

  右侧栏-->Database--> + -->Data Source-->选择数据库驱动

  点击download后,设置后数据名和用户名和密码,点击apply和ok,就可以了,直接可以在pycharm点击查看数据库表,如果你用的是sqlite数据库就更简单了,直接将sqlite拖动到Database就可以了

  前奏说多了,接下来我看看怎么用ORM实现对数据的增删改查

  首先我们必须创建表,那就要定义表类了,并且继承某个类,在Django中的要继承的类是models.Model

class UserInfo(models.Model):
name = models.CharField(max_length=24)
age = models.IntegerField()
sex = models.BooleanField(max_length=1,choices=((0,'男'),(1,'女'),))
email = models.EmailField()
home_adr = models.CharField(max_length=56) def __str__(self):
return self.name

  Django提供很多的字段,这些字段辅助form表单验证

  接下来的是操作数据

  增:create   和   对象.save

def create_data1(**kwargs):
ret = models.Author.objects.create(**kwargs) def create_data2(**kwargs):
ob = models.Author(**kwargs)
ob.save()

  删:delete

def delete_data(**kwargs):
models.Author.objects.filter(**kwargs).delete()

  改:update

def update_data(**kwargs):
models.Author.objects.filter(**kwargs).update(name='laoliu')

  查:all  first  get  filter  values

#取所有
def find_data_all(**kwargs):
r = models.UserInfo.objects.all()
return r #取某一个,获取不到报错
def find_data_one(**kwargs):
r = models.UserInfo.objects.get(**kwargs)
return r #取第一个
def find_data_first(**kwargs):
r = models.UserInfo.objects.first()
return r #筛选条件查,多个对象
def find_data_filter(**kwargs):
r = models.UserInfo.objects.filter(**kwargs)
return r #筛选字段查,多个对象
def find_data_value(*args):
r = models.UserInfo.objects.values(*args)
return r

Django models ORM基础操作--白话聊Django系列的更多相关文章

  1. Django【第5篇】:Django之ORM数据库操作

    django之ORM数据库操作 一.ORM介绍 映射关系: 表名 -------------------->类名 字段-------------------->属性 表记录-------- ...

  2. Django models多表操作

    title: Django models多表操作 tags: Django --- 多表操作 单独创建第三张表的情况 推荐使用的是使用values/value_list,selet_related的方 ...

  3. Django之ORM基础

    ORM简介 ORM概念 对象关系映射(Object Relational Mapping,简称ORM)模式是一种为了解决面向对象与关系数据库存在的互不匹配的现象的技术. 简单的说,ORM是通过使用描述 ...

  4. day 67 django 之ORM 基础安装

    一 ORM的基础部分 1 ORM的概念 对象关系映射(Object Relational Mapping(映射),简称ORM)模式是一种为了解决面向对象与关系数据库存在的互不匹配的现象的技术. 2   ...

  5. Django之ORM表操作

    ORM表操作 1.ORM单表操作 首先想操作表的增删改查,需要先导入这个表,以之前创建的UserInfo表为例,在app下的views.py中导入 from app import models def ...

  6. Django之ORM查询操作详解

    浏览目录 一般操作 ForeignKey操作 ManyToManyField 聚合查询 分组查询 F查询和Q查询 事务 Django终端打印SQL语句 在Python脚本中调用Django环境 其他操 ...

  7. django之ORM数据库操作

    一.ORM介绍 映射关系: 表名 -------------------->类名 字段-------------------->属性 表记录----------------->类实例 ...

  8. Django框架(八) Django之ORM数据库操作

    创建模型 实例:我们来假定下面这些概念,字段和关系 作者模型:一个作者有姓名和年龄. 作者详细模型:把作者的详情放到详情表,包含生日,手机号,家庭住址等信息.作者详情模型和作者模型之间是一对一的关系( ...

  9. Django框架----ORM数据库操作

    一.ORM介绍 ORM概念 对象关系映射(Object Relational Mapping,简称ORM)模式是一种为了解决面向对象与关系数据库存在的互不匹配的现象的技术. 简单的说,ORM是通过使用 ...

随机推荐

  1. linux 单机跨进程通信

    一般来说通过网络通信(比如tcp,udp)或者共享内存的方式肯定可以实现跨进程通信,但现在这里要说的是比较偏但实用的几个方法:利用unix域通信(普通网络连接),利用unix域通信(socketpai ...

  2. dbHelper类操作数据库

    using System; using System.Collections; using System.Configuration; using System.Data; using System. ...

  3. 安卓开发之玩美解决ADT和SDK不一致问题

    提示:This Android SDK requires Android Developer Toolkit version 21.1.0 or above.  Current version is ...

  4. atitit.atiLinq v2新特性attilax大总结 q326

    atitit.atiLinq v2新特性attilax大总结 q326 1. V3规划 (分开sql2obj sql2sql sql2xml)1 2. V2新特性 Url linq的定义1 3. V1 ...

  5. Atitit。sql2016标准化的规划方案 v3 q2a

    Atitit.sql2016标准化的规划方案 v3 q2a 1. Sql标准化的历史3 1.1. Sql92标准4 1.2. Sql99标准4 1.3. SQL:2003为例,它包括以下9个部分 5 ...

  6. python统计订单走势

    #coding=utf-8 import numpy as np import pandas as pd import matplotlib.pyplot as plt import matplotl ...

  7. JPA动态查询封装

    一.定义一个查询条件容器 /** * 定义一个查询条件容器 * * @param <T> */ public class Criteria<T> implements Spec ...

  8. sscanf()的用法

    头文件 #include 定义函数 int sscanf (const char *str,const char * format,........); 函数说明             sscanf ...

  9. 【原创】菜鸟版Android 笔记1- Android架构和Application

    Android架构 图1 Android架构自上而下名称为应用层.应用框架层.运行库和Adroid虚拟机层. Linux内核层. 1. 应用层 应用层像一座大厦里面的砖瓦.我们所做的开发基本上都在应用 ...

  10. Linux 总结2

    cd                                             pwd                                            mkdir ...