【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 ...
随机推荐
- 代码:jquery自定义插件 demo
jquery自定义插件 demo 2016-1-13 只是一个简易的示例 <script type="text/javascript" src="http://cd ...
- hdfs线上修改 nameserivce
hdfs线上修改 nameserivce(ns1 修改为 ns2) 1.去core-site.xml.hdfs-site.xml 把ns1 -> ns2 同步所有节点 2.去journal 数据 ...
- idea 关闭代码自动折叠,形参提示,行数栏图标,启动不默认打开上次的项目
1,代码自动折叠 1.1,File > setting > Editor > General > Code Folding 1.2,勾选右侧不想要折叠的代码部分 2,形参提示 ...
- MonGoDB 常见操作, 设置管理员和用户登入
[ 启动客户端 => ./bin/mongo --host 192.168.200.100 ] 1: 查看所有已经创建的数据库 => show dbs 2: 切换或者创建数据库 ...
- ln: 创建符号链接 "/usr/bin/java": 文件已存在
执行下述命令创建软链接 #ln -s $JAVA_HOME/bin/java /usr/bin/java 出现下述错误提示: ln: 创建符号链接 "/usr/bin/java": ...
- jinjia
https://www.cnblogs.com/dachenzi/p/8242713.html
- void类型详解
void含义 void的字面意思是"无类型",void*则为"无类型指针",void*可以指向任何类型的数据. void几乎只有"注释"和限 ...
- Linux下使用命令行配置IPMI
ipmitool是什么: 百度百科给的解释已经够用了,简单说就是“IPMI(Intelligent Platform Management Interface)即智能平台管理接口是使硬件管理具备“智能 ...
- 一次docker中的nginx进程响应慢问题定位记录
有个ft测试的环境,其中nginx使用docker发布的.测试用例是curl的时候,没有获得nginx的响应. docker ps CONTAINER ID IMAGE COMMAND CREATED ...
- iptables学习
droidwall.sh #!/system/bin/sh IPTABLES=iptables BUSYBOX=busybox GREP=grep ECHO=echo # Try to find bu ...