随着项目越来越大,采用写原生SQL的方式在代码中会出现大量的SQL语句,那么问题就出现了。1.SQL语句重复利用率不高,越复杂的SQL语句条件越多,代码越长,会出现很多相近的SQL语句。2.很多SQL语句是在业务逻辑中拼出来的,如果有数据库需要更改,就要去修改这些逻辑,这会很容易漏掉对某些SQL语句的修改。3.写SQL时容易忽略web安全问题,给未来造成隐患。
什么是ORM模型呢?
即Object-Relationl Mapping,它的作用是在关系型数据库和对象之间作一个映射,这样,我们在具体的操作数据库的时候,就不需要再去和复杂的SQL语句打交道,只要像平时操作对象一样操作它就可以了 。
一、安装python和django(这里就不讲了)
二、新建一个django项目。代码:
django-admin startproject dbdata #dbdata是我的项目名
三、新建一个django项目应用 代码:
python manage.py startapp db #db是我的项目应用
四、连接数据库(设置settings.py)
在INSTALLED_APPS 中添加项目应用,这里是db
INSTALLED_APPS = ['django.contrib.admin','django.contrib.auth','django.contrib.contenttypes','django.contrib.sessions','django.contrib.messages','django.contrib.staticfiles','db']
修改DATABASES中的参数,如下:
DATABASES = {'default': {'ENGINE': 'django.db.backends.mysql','NAME': 'yiqingdata','USER':'root','PASSWORD':'BGY20200202','HOST':'localhost','PORT':'3306',}}
五、在models.py中写需要表的字段,代码如下:(你也可以在navicat中新建好,如果用此方法,请移步至我另一篇文章。)
class Book(models.Model):name=models.CharField(max_length=100,null=False)author=models.CharField(max_length=100,null=False)price=models.FloatField(default=0)
接下来执行二条代码(迁移数据库):
python manage.py makemigrations #创建一个映射
python manage.py migrate #执行映射文件,然后新建我们的数据库表
这样我们就在数据库添加了我们的表book,实际看到的是db_book表(可以用navicat查看)db是我们的项目应用db
接下来,我们设置一下路由吧。
在urls.py中设置,如下代码:
from django.urls import pathfrom db import viewsurlpatterns = [path('', views.index),
在views.py中设置函数index,如下:
from django.http import HttpResponsedef index(request):return HttpResponse("这个是首页")
执行代码:
python mange.py runserver #开启网站服务器
浏览器输入:http://localhost:8000即可看到“这个是首页”字样
好了,到目前为止,网站都已经准备好了。接下来就来看看ORM增删改查操作:
1.ORM中的增加
这样数据库中就有了一条数据了。
2.ORM中的查询
如果查询非主键的话,可以用
book=Book.objects.filter(name='红楼梦')
注意:这样执行的话,没有具体的数据出来,
会显示:]> 这是一个QuerySet查询集
如果想看到怎么办?
需要在 models.py中添加del __str__(self)代码,如下所示
3.ORM中的删除
4.ORM中的修改
好了,以上是ORM中的增删查改,这篇文章适合小白学习,后续我会整理各种增删查改的操作,包括复杂的多表查询等等。