Django models ORM基础操作--白话聊Django系列

上次我们讲完了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系列的更多相关文章
- Django【第5篇】:Django之ORM数据库操作
django之ORM数据库操作 一.ORM介绍 映射关系: 表名 -------------------->类名 字段-------------------->属性 表记录-------- ...
- Django models多表操作
title: Django models多表操作 tags: Django --- 多表操作 单独创建第三张表的情况 推荐使用的是使用values/value_list,selet_related的方 ...
- Django之ORM基础
ORM简介 ORM概念 对象关系映射(Object Relational Mapping,简称ORM)模式是一种为了解决面向对象与关系数据库存在的互不匹配的现象的技术. 简单的说,ORM是通过使用描述 ...
- day 67 django 之ORM 基础安装
一 ORM的基础部分 1 ORM的概念 对象关系映射(Object Relational Mapping(映射),简称ORM)模式是一种为了解决面向对象与关系数据库存在的互不匹配的现象的技术. 2 ...
- Django之ORM表操作
ORM表操作 1.ORM单表操作 首先想操作表的增删改查,需要先导入这个表,以之前创建的UserInfo表为例,在app下的views.py中导入 from app import models def ...
- Django之ORM查询操作详解
浏览目录 一般操作 ForeignKey操作 ManyToManyField 聚合查询 分组查询 F查询和Q查询 事务 Django终端打印SQL语句 在Python脚本中调用Django环境 其他操 ...
- django之ORM数据库操作
一.ORM介绍 映射关系: 表名 -------------------->类名 字段-------------------->属性 表记录----------------->类实例 ...
- Django框架(八) Django之ORM数据库操作
创建模型 实例:我们来假定下面这些概念,字段和关系 作者模型:一个作者有姓名和年龄. 作者详细模型:把作者的详情放到详情表,包含生日,手机号,家庭住址等信息.作者详情模型和作者模型之间是一对一的关系( ...
- Django框架----ORM数据库操作
一.ORM介绍 ORM概念 对象关系映射(Object Relational Mapping,简称ORM)模式是一种为了解决面向对象与关系数据库存在的互不匹配的现象的技术. 简单的说,ORM是通过使用 ...
随机推荐
- ios图片轮播效果
代码地址如下:http://www.demodashi.com/demo/11959.html ImageCarousel 简单封装的图片轮播器 内存过大由于我加载的图片分辨率较高(4k) 文件目录 ...
- android-数据库SQLite相关
android平台下的SQLite数据库是一种轻量级数据库,支持标准的SQL语句. 本文将介绍 android数据库的创建 利用sql语句对数据库增删改查 系统api数据库增删改查 数据库的事务 1, ...
- AspectJ 是什么
http://www.blogjava.net/hwpok/archive/2008/06/28/211312.html 1. 序 Aspect Oriented Programming (AOP)是 ...
- __block 和__weak 区别及使用
API Reference对__block变量修饰符有如下几处解释: //A powerful feature of blocks is that they can modify variables ...
- 开放平台(接口)开发-1-天气API接口大全
前几天有个公司让准备一下第二次面试.应聘的是IOS开发实习生,可是之前一直做android,IOS刚接触了一个月,会的不是非常多,所以决定做一个实际的项目展现给面试官,余同学给了个建议:能够做一 ...
- IP报文格式及各字段意义
IP数据包由报头和数据两部分组成.报头的前一部分是固定长度,共20字节.在报头的固定部分的后面是可选部分——IP选项和填充域. 首部各字段的含义如下 1.版本 占4位,指IP协议的版本. 2 ...
- mysql group by 与order by的实例分析(mysql分组统计后最大值)
CREATE TABLE `test` ( `id` ) NOT NULL AUTO_INCREMENT, `name` ) CHARACTER SET latin1 DEFAULT NULL, `c ...
- Atitit.数据库存储引擎的原理与attilax 总结
Atitit.数据库存储引擎的原理与attilax 总结 1. 存储引擎是什么1 2. 其它数据库系统(包括大多数商业选择)仅支持一种类型的数据存储2 3. 表的存储有三个文件:结构+数据+索引2 4 ...
- [ci] 基于1 上文实现拉取代码后能自动触发sonar-runner实现代码扫描评测,job1完成
基于1 上文实现拉取代码后能自动触发sonar-runner实现代码扫描评测,job1完成 添加sonar插件 SonarQube Plugin 配置: 系统设置à告知jenkins,sona ...
- C++在线编译器
主要有3个,且它们都支持C++11 http://gcc.godbolt.org/ http://coliru.stacked-crooked.com/ http://ideone.com/ 第一个网 ...