上次我们讲完了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. 实现乐鑫esp8266的无线OTA升级,实现远程在线升级固件

    代码地址如下:http://www.demodashi.com/demo/12994.html 一.前言: 写了这么多的8266博文,一直以满意100%的心态去敲写代码固件烧录,以致很少出现 bug ...

  2. 动态加载script 和 link

    1.script EventUtil.addHandler(window, "load", function(event){ var script = document.creat ...

  3. Audio简介

    本片只简单从硬件角度简介Audio AC97/HDA Audio总线分两种: (1)I2S (2)HDA HD Audio spec Audio verb table是用来初始化audio的,一个au ...

  4. ucos-ii变量名称表

  5. linux 系统下MySQL5.7重置root密码(完整版,含ERROR 1820 (HY000)解决方案)

    mysql的root密码忘记了怎么重置? 往下看: 1.保证你的mysql服务处于关闭状态.(用ps -ef | grep mysql 查看进程,有则kill -9 进程号) 2.在my.cnf所在目 ...

  6. 用brew安装gcc48

    由于mac自带的gcc的版本过低,因此想自己装一个新的gcc. 在网上搜索了一圈后发现用brew install安装比较简单,但可能由于本地的brew有冲突,因此网上的攻略都没有效果. 通过在gith ...

  7. Atitit. Ati IDE 开发平台的第一版规划

    Atitit. Ati IDE 开发平台的第一版规划 1. 增加业务类型复杂类型内置1 1.1. 简单类型string int float自动类型转换以及2 1.2. $变量str连接2 2. Dsl ...

  8. Atitit. 二进制数据ascii表示法,与base64编码解码api 设计标准化总结java php c#.net

    Atitit. 二进制数据ascii表示法,与base64编码解码api 设计标准化总结java php c#.net 1. Base64编码, 1 1.1. 子模式 urlsafe Or  url  ...

  9. 李洪强经典面试题53-Swift

    李洪强经典面试题53-Swift Swift 网上有很多Swift的语法题,但是Swift现在语法还未稳定,所以在这里暂时不贴出语法题,可以自行搜索. Swift和Objective-C的联系 Swi ...

  10. Hibernate使用注意事项

    映射的POJO类型中如果有基本类型最好都是用包装类来代替: 注意关联关系的正确设置,一对一(主键方式.外键外键方式),一对多和多对多的配置,单向.双向的配置: 更新核心配置文件的mapping:如果是 ...