【Django】关于ORM的使用
添加模型并映射到数据库中:
1. 在 settings.py 中,配置好 DATABASES ,做好数据库相关的配置。
以mysql为例:
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'testinfo',
'USER':'root',
'PASSWORD':'Chanyx0618',
'HOST':'127.0.0.1',
'PORT':'3306',
}
}
2. 在 app 中的 models.py 中定义好模型,这个模型必须继承自 django.db.models 。
例:
class ORM_Book(models.Model):
name=models.CharField(max_length=50,null=False)
author=models.CharField(max_length=20,null=True)
price=models.FloatField(default=0,null=False)
date=models.DateTimeField(default=datetime.now)
3. 将这个 app 添加到 settings.py 的 INSTALLED_APP 中。
NSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'front',
'book',#这个是模型所在的APP
]
4. 在命令行终端,进入到项目所在的路径,然后执行命令 python manage.py makemigrations 来
生成迁移脚本文件。
5. 同样在命令行中,执行命令 python manage.py migrate 来将迁移脚本文件映射到数据库中。
数据操作:
首先要在views中添加视图并且导入模型
from .models import ORM_Book
,然后在urls中添加path
增:
def ORM_book_add(request):
book= ORM_Book(name='数字城堡',price='10',author='丹布朗')
book.save() 删:
def ORM_book_delete(request):
book=ORM_Book.objects.get(pk=5)
book.delete() 注意:删除的时候前面的查找方法用get和filter都可以,而且两个方法都可以用pk=【ID号】来查找
改:
def ORM_book_edit(request):
book=ORM_Book.objects.get(name='达芬奇密码')
book.price=50
book.save() 注意:这里不能使用filter查找,因为保存时会报错:
AttributeError at /edit_orm_book
'QuerySet' object has no attribute 'save'
查:
def ORM_book_search(request):
book = ORM_Book.objects.filter(pk=6)
filter方法返回的对象是:<QuerySet [<ORM_Book: <Book(数字城堡,丹布朗,10.0,2018-08-20 14:58:38.928982+00:00)>>]>
def ORM_book_search(request):
book = ORM_Book.objects.get(pk=6)
get方法返回的对象是:<Book(数字城堡,丹布朗,10.0,2018-08-20 14:58:38.928982+00:00)> 而且:
def ORM_book_search(request):
book = ORM_Book.objects.filter(pk=6)[0] 和
def ORM_book_search(request):
book = ORM_Book.objects.filter(pk=6).first()
都是返回的对象是:<Book(数字城堡,丹布朗,10.0,2018-08-20 14:58:38.928982+00:00)>
【Django】关于ORM的使用的更多相关文章
- python——Django(ORM连表操作)
千呼万唤始出来~~~当当当,终于系统讲了django的ORM操作啦!!!这里记录的是django操作数据库表一对多.多对多的表创建及操作.对于操作,我们只记录连表相关的内容,介绍增加数据和查找数据,因 ...
- Python’s SQLAlchemy vs Other ORMs[转发 3]Django's ORM
Django's ORM Django is a free and open source web application framework whose ORM is built tightly i ...
- 将SALT_STACK的JOB-CACHE放到数据库中,而建库用DJANGO的ORM完成
下面包括了SALT_MASTER的配置,及DJANGO的ORM里更改默认表名称,更改默认字段名称(里面有个RETURN),更改默认ID索引... 一个下午有和它磨来磨去... 感谢鹏龙,感谢高远..: ...
- Django:之ORM、CMS和二维码生成
Django ORM Django 的数据库接口非常好用,我们甚至不需要知道SQL语句如何书写,就可以轻松地查询,创建一些内容,所以有时候想,在其它的地方使用Django的 ORM呢?它有这么丰富的 ...
- Django的ORM实现数据库事务操作
在Django中实现数据库的事务操作 在学习MySQL数据库时,MySQL数据库是支持原子操作的. 什么是数据库的原子操作呢??打个比方,一个消费者在一个商户里刷信用卡消费. 交易正常时,银行在消费者 ...
- 第十九章 Django的ORM映射机制
第十九章 Django的ORM映射机制 第一课 Django获取多个数据以及文件上传 1.获取多选的结果(checkbox,select/option)时: req.POST.getlist('fav ...
- Django之ORM基础
ORM简介 ORM概念 对象关系映射(Object Relational Mapping,简称ORM)模式是一种为了解决面向对象与关系数据库存在的互不匹配的现象的技术. 简单的说,ORM是通过使用描述 ...
- Django中ORM介绍和字段及其参数
ORM介绍 ORM概念 对象关系映射(Object Relational Mapping,简称ORM)模式是一种为了解决面向对象与关系数据库存在的互不匹配的现象的技术. 简单的说,ORM是通过使用描述 ...
- ORM以及Django使用ORM创建表
day61 2018-04-28 1. 内容回顾 1. HTTP协议消息的格式: 1. 请求(request) 请求方法 路径 HTTP/1.1\r\n k1:v1\r\n ...\r\n \r\n ...
- django的ORM
在项目根目录下运行 python manage.py shell 即可进入django的交互shell界面 查询 from my_app.models import MyTestModel datas ...
随机推荐
- Dubbo(1)--初识Dubbo
1. 为什么需要 Dubbo 随着互联网的发展,网站应用的规模不断扩大,常规的垂直应用架构已无法应对,分布式服务架构以及流动计算架构势在必行,亟需一个治理系统确保架构有条不紊的演进. 单一应用架构 当 ...
- python大法好——变量、常量、input()、数据类型、字符串、格式化输出、运算符、流程控制语句、进制、字符编码
python基础知识 1.变量 变量:把程序运算的中间结果临时存到内存里,以备后面的代码可以继续调用. 作用:A.存储数据. B.标记数据. 变量的声明规则: A:变量名只能是字母,数字或下划线任意组 ...
- jsfl完成通知air
jsfl完成后生成一个文本A.txt, air开始jsfl执行后一直检测A.txt是否存在,存在就是完成了.那么就可以删除这个A.txt
- python中split()、os.path.split()函数用法
一.Python split() 通过指定分隔符对字符串进行切片,如果参数 num 有指定值,则仅分隔 num 个子字符串 str.split(str="", num=string ...
- spark使用scala读取Avro数据(转)
这是一篇翻译,原文来自:How to load some Avro data into Spark. 首先,为什么使用 Avro ? 最基本的格式是 CSV ,其廉价并且不需要顶一个一个 schema ...
- 尚硅谷springboot学习16-slf4j的使用
如何在系统中使用SLF4j 以后开发的时候,日志记录方法的调用,不应该来直接调用日志的实现类,而是调用日志抽象层里面的方法: 给系统里面导入slf4j的jar和 logback的实现jar impor ...
- C++复习:C++的类型转换
C++的类型转换 1 类型转换名称和语法 C风格的强制类型转换(Type Cast)很简单,不管什么类型的转换统统是: TYPE b = (TYPE)a C++风格的类型转换提供了4种类型转换操作符来 ...
- 跨域(一)——CORS机制
Ajax是严格遵守同源策略的,既不能从另一个域读取数据,也不能发送数据到另一个域.但是,W3C的新标准中CORS(Cross Origin Resource Sharing)推进浏览器支持这样的跨域方 ...
- RabbitMQ.Net 应用(2)
//生产者 using RabbitMQ.Client; using System; using System.Collections.Generic; using System.Linq; usin ...
- 【剑指offer】单链表尾部插入一个节点
#include <iostream> using namespace std; //链表结构体 struct ListNode { int m_Value; ListNode *next ...