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

时间:2022-02-03 00:17:11

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

一、ORM系统

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

#django模型映射关系

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

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

#数据库的配置

#1、在settings.py中配置DATABASES

DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql', #数据库引擎
'NAME': 'mydb', #数据库名称
'USER':'admin', #连接数据库的用户名
'PASSWORD':'Root110qwe', #连接数据库的密码
'HOST':'127.0.0.1', #mysql数据库的域名和ip地址
'PORT':'', #mysql的一个端口,默认为3306
}
}
#pymysql数据库连接器的配置

#2、在虚拟环境中安装pymysql
pip install pymysql #3、设置连接器为pymysql,在主目录下的_init_.py文件下添加下面两句
import pymysql
pymysql.install_as_MySQLdb()
#使用django中的模型

#4、在app(music)下面的models.py中创建django的模型类
from django.db import models class User(models.Model): #必须继承这个基类
id = models.AutoField(primary_key=True) #Autofield 表示自增长 ,这句话可以省略不写,id会默认帮我们创建
name = models.CharField(max_length=30) #CharField 表示字符串类型
age = models.IntegerField() #IntegerField 表示数字类型
#将模型类映射到数据库

#5、首先执行以下命令,要创建映射文件
python manage.py makemigrations #命令后面可以跟app名称,表示指定对某个app的模型进行映射,没写所有的app都执行;
                      #在执行前,必须保证我们创建模型的app必须是注册过的(INSTALLED_APPS) #6、执行以下命令,将映射文件中的映射数据提交到数据库中
python manage.py migrate
#如果想要删除某个表,在models.py里面讲这个表删除,然后重复上面两条命令即可

二、增删改查数据

  增

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

  查

#查找数据
def search_user(request):
rs = User.objects.all() #查询所有数据,返回的queryset类型,可以用rs[0:2]来查询
rs1 = User.objects.get(id=1) #查找id为1的数据,只能用唯一键来操作,返回单个对象,如果是多个对象就会报错
rs2 = User.objects.filter(name='budong') #使用filter过滤的方法,返回queryset类型
print(rs2)
return HttpResponse('查找数据成功')
    path('search/',views.search_user),
#数据库相关的接口(QuerySet API)

#1、从数据库中查询出来的结果一般是一个集合,这个集合叫做QuerySet
#2、QuerySet是可迭代对象
#3、QuerySet支持切片,不知处负索引
#4、可以用list强行将QuerySet变成列表

  改

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

  删

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

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

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

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

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

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

  8. Django图书管理系统&lpar;前端对有外键的数据表增删改查&rpar;

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

  9. vue2&period;0&period;js基础开发使用心得(结合实际项目对数据的增删改查)

    1.首先申明,没有使用vue 的组件,以及脚手架等,都是一些基础语法的使用. ------------------------------------------------------------- ...

随机推荐

  1. &lbrack;java报错&rsqb;Could not instantiate listener XXXXXX

    写在开头的话: 兜兜转转,辞去了深圳的工作,回到了武汉,从事的居然一度是我最不想学的语言-java,曾经以为自己并不会java,但是上手之后,发现语言都是相通的,自己一度排斥学习java真的是不能再傻 ...

  2. PLSQL碰到pls-00103的错误解决办法

    CREATE OR REPLACE PACKAGE PKG_SHOW_CUST_DETAILS AS PROCEDURE SHOW_CUST_DETAILS( myArg VARCHAR2);END ...

  3. htop 源码安装

    htop-1.0.2.tar.gz  http://pan.baidu.com/s/1c1RbdIg tar -xvf htop-1.0.2.tar.gz cd htop-1.0.2 ./config ...

  4. HDU-3853 LOOPS(概率DP求期望)

    题目大意:在nxm的方格中,从(1,1)走到(n,m).每次只能在原地不动.向右走一格.向下走一格,概率分别为p1(i,j),p2(i,j),p3(i,j).求行走次数的期望. 题目分析:状态转移方程 ...

  5. &lbrack;转载&rsqb;AFX&lowbar;MANAGE&lowbar;STATE关于资源切换

    应用程序进程本身及其调用的每个DLL模块都具有一个全局唯一的HINSTANCE句柄,它们代表了DLL或EXE模块在进程虚拟空间中的起始地址.进程本身的模块句柄一般为0x400000,而DLL模块的缺省 ...

  6. Ehcache专栏

    http://www.iteye.com/blogs/subjects/ehcache

  7. js方法在iframe父子窗口

    http://developer.51cto.com/art/201009/228891.htm http://developer.51cto.com/art/201009/228891.htm ht ...

  8. Mojo 自动发布接口

    get '/api/auto_publish/publish' => sub{ my $c = shift; my $env = $c->param('env'); my $app = $ ...

  9. Redmine基础&colon; 邮件配置

    1.用文本编辑器打开 D:\Bitnami\redmine-2.6.5-0\apps\redmine\htdocs\config\configuration.yml 文件,找到以下内容: 2.配置邮件 ...

  10. js 快速生成数组的方法

    //实现方法一:循环赋值var arr1 = new Array(100);for(var i=0;i<arr1.length;i++){ arr1[i] = i;}console.log(ar ...