首页 > 其他分享 >1105. 模型基础

1105. 模型基础

时间:2023-05-22 10:35:13浏览次数:42  
标签:name objects 模型 基础 映射 1105 User app

一、Django的ORM简介

1. ORM系统

概念:对象关系映射(Object Relational Mapping,简称ORM)

优势:不用直接编写SQL代码,只需像操作对象一样从数据库操作数据。

2. django模型映射关系

① 模型类必须都写在app下的modles.py文件中

② 模型如果需要映射到数据库,所在的app必须被安装

③ 一个数据表对应一个模型类,表中的字段,对应模型中的类属性

二、数据库连接配置

1. 在setting.py中配置DATABASES

创建一个管理员用户moran账号,密码qwe123:

CREATE USER 'moran'@'%'IDENTIFIED BY 'qwe123';

给这个用户授予所有远程访问,这个用户主要用于管理整个数据库,备份,还原等操作。

GRANT ALL ON *.* TO 'moran'@'%';

使授权立即生效:

FLUSH PRIVILEGES;

2. pymysql数据库连接器的配置:

① 在虚拟环境中安装pymysql: pip install pymysql -i https://pypi.douban.com/simple

② 设置连接器为pymysql:

在主目录__init__.py文件添加以下两行代码:

# __init__.py文件
import pymysql pymysql.install_as_MySQLdb()

三、模型的创建与映射

1. 在app下面的models.py中创建django的模型类:

2. 将模型类映射到数据库:

① 首先执行以下命令,要创建映射文件

python manage.py makemigrations  [app name] 

注:命令后面可以跟app名称,表示指定对某个app的模型进行映射,没写所有的app都执行。

② 执行以下命令,将映射文件中的映射数据提交到数据库中

python manage.py migrate

注: 在执行以上命令前,要保证我们创建模型的app是已经注册过的app。

执行完以上命令后,在数据库中可以查询到创建的以app名_模型名的数据表,二其他的一些表格是django自动生成的。

注: 如果要删除表,那么可以去django模型中注释掉模型类,然后执行映射的命令,不要手动在命令行里面去删除。

四、数据的增删改查

1. 增加数据

在视图函数中导入User模型类,然后使用下面的方法添加数据

from .models import User

def add_user(request):
    # 方法一
    taka =  User(name='taka', age=18)
    taka.save()

    # 方法二
    xiaopo = User()
    xiaopo.name = 'xiaopo'
    xiaopo.age = 18
    xiaopo.save()

    # 方法三
    User.objects.create(name='xiaoming', age=20)

    # 方法四
    User.objects.get_or_create(name='xiaohong', age=21)
    return HttpResponse('插入数据成功!')

2. 查找数据

在视图函数中导入User模型类,实现简单的查找

from .models import User

def search_user(request):
    # 查询所有记录对象
    rs = User.objects.all()
    
    # 查询一个记录对象
    rs = User.objects.get(id=1)

    # 获取满足条件的对象
    rs = User.objects.filter(name='xiaoming')
    print(rs)
    return HttpResponse('查询数据成功!')

注:数据库相关的接口(QuerySet API)

① 从数据库总查询出来的结果一般是一个集合,这个集合叫做QuerySet

② QuerySet是可迭代对象

③ QuerySet支持切片,不支持复索引

④ 可以用list强行将QuerySet变成列表

3. 修改数据

在视图函数中导入User模型类,然后使用下面的方法更新数据

from .models import User

def update_user(request):
    # 先查询到再属性赋值修改
    rs = User.objects.get(name='xiaoming')
    rs.name = 'Xiaoming'   # 简单的变更首字母大小写
    rs.save()

    # 使用update方法直接修改
    User.objects.filter(name='Xiaoming').update(name='XM')
    User.objects.all().update(city="wuhan")     
    return HttpResponse("更新数据成功!")

4. 删除数据

在视图函数中导入User模型类,然后使用下面的方法删除数据

from .modles import User

def delete_user(request):
    User.objects.get(id=1).delete()
    User.objects.filter(age=18).delete()
    User.objects.all().delete()
    return HttpResponse("删除数据成功!")

 

标签:name,objects,模型,基础,映射,1105,User,app
From: https://www.cnblogs.com/lxinghua/p/17419959.html

相关文章

  • 基于pytorch实现模型剪枝
    所谓模型剪枝,其实是一种从神经网络中移除"不必要"权重或偏差(weigths/bias)的模型压缩技术。本文深入描述了pytorch框架的几种剪枝API,包括函数功能和参数定义,并给出示例代码。一,剪枝分类1.1,非结构化剪枝1.2,结构化剪枝1.3,本地与全局修剪二,PyTorch的剪枝2.1,pytorch......
  • NOI / 1.8编程基础之多维数组 8:肿瘤面积
    描述在一个正方形的灰度图片上,肿瘤是一块矩形的区域,肿瘤的边缘所在的像素点在图片中用0表示。其它肿瘤内和肿瘤外的点都用255表示。现在要求你编写一个程序,计算肿瘤内部的像素点的个数(不包括肿瘤边缘上的点)。已知肿瘤的边缘平行于图像的边缘。输入只有一个测试样例。第一行有一......
  • 2.Java基础【Java面试第三季】
    2.Java基础【Java面试第三季】前言推荐2.Java基础01_字符串常量Java内部加载-上58同城的java字符串常量池面试code讲解intern()方法---源码+解释02_字符串常量Java内部加载-下whyOpenJDK8底层源码说明递推步骤总结考查点03_闲聊力扣算法第一题字节跳动两数求和题目说明面试题解法04......
  • AS3 Socket 通信基础(一)
    我们先来搞清几个概念,这有助于我们更加了解网络通信!  1、网络中进程之间如何通信?  首要解决的问题是如何唯一标识一个进程,否则通信无从谈起!在本地可以通过进程PID来唯一标识一个进程,但是在网络中这是行不通的。其实TCP/IP协议族已经帮我们解决了这个问题,网络层的“ip地址”可......
  • MySQL学习基础篇Day6
    5.多表查询我们之前在讲解SQL语句的时候,讲解了DQL语句,也就是数据查询语句,但是之前讲解的查询都是单表查询,而本章节我们要学习的则是多表查询操作,主要从以下几个方面进行讲解。5.1多表关系项目开发中,在进行数据库表结构设计时,会根据业务需求及业务模块之间的关系,分析并设计表......
  • Qt开发笔记-----基础篇
    1.1为什么要学QtQt是一个跨平台的C++图形用户界面应用程序框架Qt为应用程序开发者提供建立艺术级图形界面所需的所有功能Qt是完全面向对象的,很容易扩展,并且允许真正的组件编程(1)Qt发展史在讲解学习Qt的必要性之前,先来了解下Qt的发展历史:1991年,Qt最早由奇趣科技......
  • Ext JS 4:模型剖析
          如果你在跟踪ExtJS动态,你可能已经知道,在ExtJS4中有一个全新的数据包。新的数据包在ExtJS3的基础上,增加了大良的新功能。近期我们在博客上介绍了新的数据包,今天我们将深度探讨新的Model类。     几乎每一个Model类就代表了应用程序中持久化的数据类型。例如......
  • 中文环境下使用 huggingface 模型替换 OpenAI的Embedding 接口
    OpenAI的文本嵌入衡量文本字符串的相关性。嵌入通常用于:搜索(其中结果按与查询字符串的相关性排名)聚类(其中文本字符串按相似性分组)推荐(推荐具有相关文本字符串的项目)异常检测(识别出相关性不大的异常值)多样性测量(分析相似性分布)分类(其中文本字符串按其最相似的标签分类)嵌入是浮......
  • 开发基础
    git的安装与配置教程-超详细版 含JDK和IDEA安装链接怎么拉取gitee项目  ......
  • python基础-进程池、submit同异步调用、shutdown参数、ProcessPoolExecutor进程池、进
    转载:(14条消息)python基础-进程池、submit同异步调用、shutdown参数、ProcessPoolExecutor进程池、进程池ftp_pythonsubmit_易辰_的博客-CSDN博客引入进程池在学习线程池之前,我们先看一个例子frommultiprocessingimportProcessimporttimedeftask(name):print(......