十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
ORM: 优点: 1.简单,不用自己SQL语句 2.开发效率高 缺点: 1.记忆你这个特殊的语法 2. 相对于大神的SQL语句,肯定执行效率有差距
ORM的对应关系: 类 ---> 数据表 对象 ---> 数据行 属性 ---> 字段
ORM能做的事儿: 1.操作数据表 ---> 创建表、删除表、修改表 2.操作数据行 ---> 数据的增、删、改、查 注意事项:不能创建数据库、自己动手创建数据库
1. 修改django项目中settings.py 中数据库连接类型:
create database dbs11;
2. 在Django项目中设置连接数据库的相关配置(告诉Django连接哪一个数据库)
#数据库相关配置 DATABASES = { 'default':{ #连接的数据库类型 'ENGINE':'django.db.backends.mysql', #连接数据库的地址 'HOST':'127.0.0.1', #数据库端口 'PORT':3306, #连接数据库的名称 'NAME':"dbs11", #连接数据库的用户名 'USER':'root', #连接数据库的密码 'PASSWORD':'123456' } }
3.告诉Django用pymysql代替默认的MySQLDB 连接MySQL数据库
在项目目录中__init__.py文件中导入MySQL连接配置文件
import pymysql #告诉Django用pymysql来代替默认的MySQLdb pymysql.install_as_MySQLdb()
4.在项目如(app)下面的models.py 文件中定义一个类,这个类必须继承models.Model
from django.db import models #ORM相关的只能写在这个文件里,写到别的文件里Django找不到 ##例如: class UserInfo(models,Model): id = models.AutoField(primary_key=True) #创建一个自增的主键字段 name = models.CharField(null=False,max_length=16) #创建一个varchar类型的字段不能为空
5.执行两个命令
python3 manage.py makemigrations python3 manage.py migrate
说明:以上为通过ORM创建数据库,如果是删除或者修改只需要在models.py文件中删除相关字段然后执行第5步的两个命令即可删除字段。修改同样只需要修改models.py文件然后执行第5步的两个命令即可。
ORM查询
示例:ORM查询所有用户
#orm查询语法:models.表名.objects.all() #查询所有 ### ret = models.UserInfo.objects.all() print(ret[0].id,ret[0].name)
在django项目中应用操作:
后端执行方法:
from django.shortcuts import HttpResponse, render, redirect from app import models def user_list(request): #去数据库中查询所有的用户 #利用ORM这个工具去查询数据库,不用自己去查询 ret = models.UserInfo.objects.all() # 打开user_list.html文件, return render(request, "user_list.html", {"user_list": ret})
前端HTML
用户列表页 添加用户
id值 | 用户名 |
---|---|
{{ user.id }} | {{ user.name }} |
路由urls.py配置:
from app import views #导入项目 urlpatterns = [ url(r'^user_list/',views.user_list) #定义对应路径关系 ]
ORM添加
#orm添加语法:models.表名.objects.create(name=new_name) #ORM添加
示例:ORM添加用户
models.UserInfo.objects.create(name=new_name)
路由urls.py配置:
from app import views #导入项目 urlpatterns = [ url(r'^user_list/',views.user_list), #定义对应路径关系 url(r'^user_add/',views.user_add), ]
后端执行方法:
def user_add(request): if request.method == "POST": #用户填写新的用户名,并发送POST请求 new_name = request.POST.get('username',None) #去数据库中创建一条用户记录 models.UserInfo.objects.create(name=new_name) ##添加成功后返回展示网页 return redirect("/user_list/") #第一个请求页面的时候,就返回一个页面,页面上有两个框让用户填写 return render(request,"add_user.html")
前端执行的方法:
添加用户
ORM与原生SQL查询
#原生SQL #查询所有 select * from user; ##ORM语法: models.user.objects.all() ###ORM条件语句查询 #filter条件(SQL:where) models.user.objects.filter(id=1) #条件大于 ##SQL: SELECT * from user where id>1 and password='123' #ORM gte models.user.objects.filter(id__gt=1,password='123') #条件 like语法 ##ORM models.user.objects.filter(password__startswith='a') #以a开头 .这里对大小写敏感,而SQL like不敏感 models.user.objects.fileter(username__icontains='a') #对大写不敏感的,即a,A都匹配 #SQL in 语句对比ORM语句 select ... where id in(1,2,3,4); models.user.objects.filter(id__in=[1,2,3,4]) ##ORM查询日期 models.user.objects.filter(register_date_month=5) models.user.objects.filter(register_date_month=5)[0].register_date #对比SQL语句 select ... where extract('month' from pub_date) = '12'; ##ORM批量创建用户 #有100个创建对象 objs = [models.user(title='name{}'.format(i)) for i in range(100)] models.user.objects.bulk_create(onjs,10) #这里是10个一提交,即每次创建10个用户
另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。