Django 06 Django模型基础1(ORM简介、数据库连接配置、模型的创建与映射、数据的增删改查)

一、ORM系统

  1. #django模型映射关系
  2.  
  3. #模型类-----数据表
  4. #类属性-----表字段名
  5.  
  6. #1、模型类必须写在app下的models.py文件中
  7. #2、模型如果需要映射到数据库,所在的app必须被安装
  8. #3、一个数据表对于一个模型 类,表中的字段对于模型中的类属性

二、数据库的链接配置和模型类的创建及映射

  1. #数据库的配置
  2.  
  3. #1、在settings.py中配置DATABASES
  4.  
  5. DATABASES = {
  6. 'default': {
  7. 'ENGINE': 'django.db.backends.mysql', #数据库引擎
  8. 'NAME': 'mydb', #数据库名称
  9. 'USER':'admin', #连接数据库的用户名
  10. 'PASSWORD':'Root110qwe', #连接数据库的密码
  11. 'HOST':'127.0.0.1', #mysql数据库的域名和ip地址
  12. 'PORT':'', #mysql的一个端口,默认为3306
  13. }
  14. }
  1. #pymysql数据库连接器的配置
  2.  
  3. #2、在虚拟环境中安装pymysql
  4. pip install pymysql
  5.  
  6. #3、设置连接器为pymysql,在主目录下的_init_.py文件下添加下面两句
  7. import pymysql
  8. pymysql.install_as_MySQLdb()
  1. #使用django中的模型
  2.  
  3. #4、在app(music)下面的models.py中创建django的模型类
  4. from django.db import models
  5.  
  6. class User(models.Model): #必须继承这个基类
  7. id = models.AutoField(primary_key=True) #Autofield 表示自增长 ,这句话可以省略不写,id会默认帮我们创建
  8. name = models.CharField(max_length=30) #CharField 表示字符串类型
  9. age = models.IntegerField() #IntegerField 表示数字类型
  1. #将模型类映射到数据库
  2.  
  3. #5、首先执行以下命令,要创建映射文件
  4. python manage.py makemigrations #命令后面可以跟app名称,表示指定对某个app的模型进行映射,没写所有的app都执行;
                          #在执行前,必须保证我们创建模型的app必须是注册过的(INSTALLED_APPS)
  5.  
  6. #6、执行以下命令,将映射文件中的映射数据提交到数据库中
  7. python manage.py migrate
  1. #如果想要删除某个表,在models.py里面讲这个表删除,然后重复上面两条命令即可

二、增删改查数据

  增

  1. #在视图函数view.py里面写入
  2. from django.shortcuts import render
  3. from django.http import HttpResponse
  4.  
  5. from .models import User #由于下面的操作都是操作模型类,所有导入User类
  6.  
  7. def add_user1(request): #添加数据方法一
  8. taka = User(name='taka',age=18)
  9. taka.save() #刷入数据库
  10. return HttpResponse('添加user成功')
  11.  
  12. def add_user2(request):#添加数据方法二
  13. xiaopo = User()
  14. xiaopo.name = 'xiaopo'
  15. xiaopo.age = 28
  16. xiaopo.save()
  17. return HttpResponse('添加user成功')
  18.  
  19. def add_user3(request): #添加数据方法三
  20. User.objects.create(name='budong',age=19) #不需要save,直接刷入数据库
  21. return HttpResponse('添加user成功')
  22.  
  23. def add_user4(request): #添加数据方法四
  24. User.objects.get_or_create(name='which',age=20)
  25. return HttpResponse('添加user成功')
  1. #在同app下的urls.py里面写入
  2. from django.urls import path
  3. from . import views
  4.  
  5. urlpatterns = [
  6. path('add1/',views.add_user1),
  7. path('add2/',views.add_user2),
  8. path('add3/',views.add_user3),
  9. path('add4/',views.add_user4),
  10. ]

  查

  1. #查找数据
  2. def search_user(request):
  3. rs = User.objects.all() #查询所有数据,返回的queryset类型,可以用rs[0:2]来查询
  4. rs1 = User.objects.get(id=1) #查找id为1的数据,只能用唯一键来操作,返回单个对象,如果是多个对象就会报错
  5. rs2 = User.objects.filter(name='budong') #使用filter过滤的方法,返回queryset类型
  6. print(rs2)
  7. return HttpResponse('查找数据成功')
  1. path('search/',views.search_user),
  1. #数据库相关的接口(QuerySet API)
  2.  
  3. #1、从数据库中查询出来的结果一般是一个集合,这个集合叫做QuerySet
  4. #2、QuerySet是可迭代对象
  5. #3、QuerySet支持切片,不知处负索引
  6. #4、可以用list强行将QuerySet变成列表

  改

  1. #修改数据
  2. def update_user1(request):
  3. '''
  4. 需要先查找到对象,然后在对属性进行重新赋值
  5. '''
  6. taka = User.objects.get(name='taka')
  7. taka.name = 'TAKA' #将taka修改为TAKA
  8. taka.save()
  9. return HttpResponse('更新数据成功')
  10.  
  11. def update_user2(request):
  12. User.objects.filter(id=2).update(name='tuple') #先查找,在修改
  13. return HttpResponse('更新数据成功')
  14.  
  15. def update_user3(request):
  16. User.objects.all().update(age=28) #这是直接修改整列
  17. return HttpResponse('更新数据成功')
  1. path('update1/',views.update_user1),
  2. path('update2/',views.update_user2),
  3. path('update3/',views.update_user3),

  删

  1. #删除数据
  2. def delete_user(request):
  3. User.objects.get(id=3).delete() #查找id为3的数据,然后删除
  4. rs = User.objects.all().delete() #查找所有数据,然后delete
  5. User.objects.filter(name='budong').delete() #指定字段名,然后delete
  6. print(dir(rs)) #查询方法
  7. return HttpResponse('删除数据成功')
  1. path('delete/',views.delete_user),

Django 06 Django模型基础1(ORM简介、数据库连接配置、模型的创建与映射、数据的增删改查)的更多相关文章

  1. Django——6 模型基础ORM 数据库连接配置 模型的创建与映射 数据的增删改查

    Django Django的ORM简介 数据库连接配置 模型的创建与映射 数据库的增删改查 增数据 查数据及补充 改数据 删数据   Django的ORM系统分析 ORM概念:对象关系映射(Objec ...

  2. Django框架之第二篇--app注册、静态文件配置、form表单提交、pycharm连接数据库、django使用mysql数据库、表字段的增删改查、表数据的增删改查

    本节知识点大致为:静态文件配置.form表单提交数据后端如何获取.request方法.pycharm连接数据库,django使用mysql数据库.表字段的增删改查.表数据的增删改查 一.创建app,创 ...

  3. django学习-12.访问不同url/接口地址实现对指定数据的增删改查功能

    1.前言 通过前面博客[django学习-10.django连接mysql数据库和创建数据表]里的操作,我们已经成功在数据库[hongjingsheng_project]里创建了一张数据表[hello ...

  4. Django之数据表增删改查

    Django数据增删改查: 上课代码 from django.shortcuts import render,HttpResponse # Create your views here. from a ...

  5. AD 域服务简介(三)- Java 对 AD 域用户的增删改查操作

    博客地址:http://www.moonxy.com 关于AD 域服务器搭建及其使用,请参阅:AD 域服务简介(一) - 基于 LDAP 的 AD 域服务器搭建及其使用 Java 获取 AD 域用户, ...

  6. .NET ORM框架HiSql实战-第二章-使用Hisql实现菜单管理(增删改查)

    一.引言 上一篇.NET ORM框架HiSql实战-第一章-集成HiSql 已经完成了Hisql的引入,本节就把 项目中的菜单管理改成hisql的方式实现. 菜单管理界面如图: 二.修改增删改查相关代 ...

  7. Django创建并连接数据库(实现增删改查)--ORM框架雏形

    第一步:要先创建数据库(orm是不能创建数据库的) 第二步:settings里面指定连接到哪个数据库 DATABASES = { #默认使用的是sqlite3数据库 'default': { 'ENG ...

  8. Django创建并连接数据库(实现增删改查)--第二版

    注意点一: url里面的地址,不只是html页面,准确说是views视图里面对应的函数方法 <!DOCTYPE html> <html lang="en"> ...

  9. Django图书管理系统(前端对有外键的数据表增删改查)

    图书管理 书籍管理 book name 项目源码位置:https://gitee.com/machangwei-8/learning_materials/tree/master/%E9%A1%B9%E ...

随机推荐

  1. nodejs的POST请求

    http://blog.csdn.net/puncha/article/details/9015317 Nodejs 发送HTTP POST请求实例 2013-06-03 17:55 71745人阅读 ...

  2. [Elasticsearch2.x] 多字段搜索 (三) - multi_match查询和多数字段 <译>

    multi_match查询 multi_match查询提供了一个简便的方法用来对多个字段执行相同的查询. NOTE 存在几种类型的multi_match查询,其中的3种正好和在“了解你的数据”一节中提 ...

  3. 【总结整理】dojo学习

    Dojo Toolkit 的特性可以分到 4 个不同部分.这种划分使得开发人员可以将库大小保持到最小,确保应用程序性能不受大量 JavaScript 库下载的影响.例如,如果您只需要 Ajax 支持性 ...

  4. C++面向对象类的实例题目四

    题目描述: 以面向对象的概念设计一个类,此类包含3个私有数据:unlead.lead(无铅汽油和有铅汽油)以及total(当天总收入,无铅汽油的价格是17元/升,有铅汽油的加个是16元/升),请以构造 ...

  5. Vue02 样式的动态绑定

    daigengxin......2018-3-8 21:09:18 跟angular2类似,分为CSS类绑定和Style样式绑定两种方式,详情参见

  6. 【转】nginx+memcached构建页面缓存应用

    如需转载请注明出处: http://www.ttlsa.com/html/2418.html nginx的memcached_module模块可以直接从memcached服务器中读取内容后输出,后续的 ...

  7. cmake利用toolchain.cmake生成makefile之后,make生成静态库失败问题

    问题描述 利用toolchian.cmake设置好编译器后,利用make指令生成静态库,出现以下问题 Error running link command: No such file or direc ...

  8. c++ vitual继承

    为了解决多继承下的二义性而设计的vitrul继承 class Base { public: Base(void); ~Base(void); }; Base::Base(void) { printf( ...

  9. cakephp数据库配置

  10. ISIS协议

    ISIS协议是中间系统到中间系统协议(Intermediate system to intermediate system),是一种内部网管协议,是电信运营商普遍采用的内部网管协议之一. 简单的说IS ...