ORM对象关系型映射的用法
ORM对象关系型映射的用法 -- Django模型
1.什么是ORM关系型映射
ORM 全拼Object-Relation Mapping.
中文意为 对象-关系映射.
主要实现模型对象到关系数据库数据的映射.
2.Django数据类型
| 类型 | 说明 |
|---|---|
| AutoField | 用于存放integer类型的数字 |
| BooleanField | 用于存放布尔类型的数据(Ture或False) |
| CharField | 用于存放字符型的数据,需要指定长度max_length |
| CommaSeparatedIntegerField | 用于存放用逗号隔开的 integer 类型的数据 |
| DateField | 日期型,必须是“YYYY-MM-DD”格式 |
| DateTimeField | 日期时间型,必须是"YYYY-MM-DD HH:MM[:ss[.uuuuuu]][TZ] "格式。 |
| DecimalField | 小数型,用于存放小数的数字。 |
| EmailField | 电子邮件类型 |
| FilePathField | 文件路径类类型,FilePathFields must have either 'allow_files' or 'allow_folders' set to True. |
| FloatField | 浮点型。用于存放浮点型数据。 |
| IntegerField | 用于存放 integer 类型的数字。 |
| BigIntegerField | 用于存放大 integer 类型的数字,最大数支持:9223372036854775807 |
| GenericIPAddressField | 存放 IP 地址的类型,IPv4 和 IPv6 地址,字符串格式。 |
| NullBooleanField | vlaue must be either None, True or False. |
| PositiveSmallIntegerField | Positive small integer |
| SlugField | 需要定义 max_length 值。 |
| SmallIntegerField | Small integer |
| TextField | 用于存放文本类型的数据。 |
| TimeField | 时间类型。"HH:MM[:ss[.uuuuuu]]" 格式 |
| URLField | 用于存放 URL 地址 |
| BinaryField | Raw binary data |
3.Django模型中设计系统表
from django.db import models
# Create your models here.
class Event(models.Model):
"""活动表"""
name = models.CharField("发布会名称",max_length=100) #发布会名称
limit = models.IntegerField("参加人数") #人数
status = models.BooleanField("状态",default=True) #活动开始状态
address = models.CharField("地址",max_length=100) #地址
start_time = models.DateTimeField("时间") #活动开始时间
create_time = models.DateTimeField(auto_now_add=True) #创建时间
def __str__(self):
return self.name
class Guest(models.Model):
"""嘉宾表"""
event = models.ForeignKey(Event,on_delete=models.Case) #嘉宾与活动关联
real_name = models.CharField("姓名",max_length=64) #真实姓名
phone = models.CharField("手机号",max_length=16) #手机号
email = models.EmailField("邮箱") #邮箱
sign = models.BooleanField("签到") #签到
create_time = models.DateTimeField(auto_now_add=True)
def __str__(self):
return self.real_name
4.迁移数据库
> python manage.py makemigrations
> python manage.py migrate
> 注册后台admin用户
> python manage.py createsuperuser
5.admin后台管理/自定义后台
#在admin.py中完成模型的注册
from django.contrib import admin
from model_app.models import Event,Guest
# Register your models here.
class EventAdmin(admin.ModelAdmin):
"""显示出Event数据的字段"""
list_display = ['name','limit','status','address','start_time']
class GuestAdmin(admin.ModelAdmin):
"""显示出Guest数据的字段"""
list_display = ['real_name','phone','email','sign']
admin.site.register(Event,EventAdmin)
admin.site.register(Guest,GuestAdmin)
6.ORM基本数据访问
D:\pydj\guest> python3 manage.py shell 模式下进行
6.1 查询数据
- 根据主键查询数据
e1 = Event.objects.get()
有局限性:
1.数据库中存在多个数据时,会报错
2.数据库中不存在时数据时,会报错
用法: 用户根据主键查询
e1 = Event.objects.get(id=1)
- 类似where查询
e1 = Event.objects.filter()
- 模糊查询
e1 = Event.objects.filter(name__contains="python")
6.2 插入数据
- 方式一
e1 = Event(id=2,name='朋友',limit=2000,status=True,address='北京水立方',start_time=datetime(2016,8,10,14,0,0))
e1.save
- 方式二
Event.objects.create(id=2,name='朋友',limit=2000,status=True,address='北京水立方',start_time=datetime(2016,8,10,14,0,0))
6.3 删除数据
- 先查出数据,后删除
e1 = Event.objects.get(id=1)
e1.delete()
或者 Event.objects.get(id=1).delete()
6.4 更新数据
- 方式一 查询出数据,后根据字段进行更新 例如:查询phone='13611001101' 的嘉宾,更新 realname='andy2''
e1 = Event.objects.get(phone='13611001101')
e1.realname = 'andy2'
e1.save()
- 方法二
Event.objects.select_for_update().filter(phone='13611001101').update(realname='andy')
ORM对象关系型映射的用法的更多相关文章
- ORM 对象关系映射
ORM (object relation mapping) 就是将对象数据转换为sql语句并执行 对象关系映射框架 orm 需要做的事情 1 生成创建表的语句 2 插入数据的语句 3 删除数据的语句 ...
- Django---静态文件配置,post提交表单的csrf问题(日后细说),创建app子项目和分析其目录,ORM对象关系映射简介,Django操作orm(重点)
Django---静态文件配置,post提交表单的csrf问题(日后细说),创建app子项目和分析其目录,ORM对象关系映射简介,Django操作orm(重点) 一丶Django的静态文件配置 #we ...
- Php ORM 对象关系映射
ORM的全称是Object Relational Mapping,即对象关系映射.它的实质就是将关系数据(库)中的业务数据用对象的形式表示出来,并通过面向对象(Object-Oriented)的方式将 ...
- ORM对象关系映射之GreenDAO源码解析
上一篇我们学习了GreenDAO的CRUD基本操作,可以说是非常的方便的,而且GreenDAO的效率和性能远远高于其它两款流行的ORM框架,下面是我从官网找的一副它们三个ORM框架之间的性能测试的直观 ...
- $Django setting.py配置 ,GET、POST深入理解,三件套,orm对象关系映射简介
1 django中app的概念: 大学:----------------- 项目 信息学院 ----------app01 物理学院-----------app02 ****强调***:创建的每一 ...
- ORM对象关系映射
ORM 总结: ORM:对象关系映射 作用: 1.将定义数据库模型类--> 数据库表 2.将定义数据库模型类中的属性--->数据库表字段 3.将模型对象的操作(add,delete,com ...
- Java 自定义注解实现ORM对象关系映射
一,ORM概念 ORM即Object Relation Mapping,Object就是对象,Relation就是关系数据库,Mapping映射,就是说Java中的对象和关系数据库中的表存在一种对应关 ...
- django-模型之(ORM)对象关系映射(一)
所谓对象关系映射,就是将数据库的一些名字与python中的一些名字相对应,表名-->类名,字段-->属性,操作(增删改查)-->方法.这样,我们就可以通过对Python代码的编辑来对 ...
- ORM对象关系映射之GreenDAO高级用法
CRUD 增加: dao.insert(Student entity);//添加一个 dao.insertInTx(Student... entity);//批量添加 删除: dao.deleteBy ...
随机推荐
- hdu 1011 树型dp
#include <cstdio> #include <iostream> #include <cstring> #include <vector> u ...
- Android自己定义控件之轮播图控件
背景 近期要做一个轮播图的效果.网上看了几篇文章.基本上都能找到实现,效果还挺不错,可是在写的时候感觉每次都要单独去又一次在Activity里写一堆代码.于是自己封装了一下.这里仅仅是做了下封装成一个 ...
- 用python阐释工作量证明(proof of work)
了解比特币的都知道挖矿非常耗电,这是由于比特币用到了工作量证明. 工作量证明是指系统为达到某目标而设置的工作度量方法.一開始是用在网络攻防上,大大提高攻击者的计算量,攻击成本也就上去了. 工作量证明须 ...
- PHP设计模式之 单例模式 工厂模式 实例讲解
单例模式又称为职责模式,它用来在程序中创建一个单一功能的访问点,通俗地说就是实例化出来的对象是唯一的.所有的单例模式至少拥有以下三种公共元素:1. 它们必须拥有一个构造函数,并且必须被标记为priva ...
- ZOJ3629 Treasure Hunt IV(找规律,推公式)
Treasure Hunt IV Time Limit: 2 Seconds Memory Limit: 65536 KB Alice is exploring the wonderland ...
- Polyfill 与 Shim
Polyfill 与 Shim polyfill 的概念是 Remy Sharp 在2010年提出的. polyfill,或 polyfiller ,表示为开发人员提供旧浏览器没有原生支持的较新功能的 ...
- HDU 3018 一笔画问题
题意:给你一个图 判断最少用几笔把这个图画出来(画过的边不能重新画) 思路: 并查集+欧拉回路 仔细想一想. 在一个强连通分量中 所有度为奇数的点之和÷2就是要画的笔画数 Now question : ...
- lua环境变量
function foo() print(g or "'g' is not defined!") end foo() env = { g = 100, print = print ...
- highcharts例子
直接看代码 <script language="JavaScript"> $(document).ready(function() { $.ajax({ type:'p ...
- 初步学习Axure---整理了一下自己两周的学习成果:动态面板
自己无意间发现了做原型设计的工具--Axure,所以就自学了一点皮毛.最近时间比较充裕,就把自己现学现卖的东西整一整. 作品比较简单,没有技术可言,根据用户和开发需求,利用动态面板和一些点击事件完成了 ...