当前位置: 首页 > news >正文

Django模型(一)

一、介绍

image-20220929155823965

模型,就是python中的类对应数据库中的表

1.1、ORM

ORM 就是通过实例对象的语法,完成关系型数据库的操作的技术,是"对象-关系映射"(Object/Relational Mapping) 的缩写

image-20220918154228986

ORM 把数据库映射成对象

image-20220918154956326

1.2、示例

1.2.1、模型
from django.db import modelsclass Person(models.Model):first_name = models.CharField(max_length=30)last_name = models.CharField(max_length=30)
1.2.2、数据库表
CREATE TABLE myapp_person ("id" bigint NOT NULL PRIMARY KEY GENERATED BY DEFAULT AS IDENTITY,"first_name" varchar(30) NOT NULL,"last_name" varchar(30) NOT NULL
);

说明

  1. 模型类必须继承models.Model
  2. 每个属性对应数据库表中的一个字段
  3. 表名自动使用 应用_类名 的小写(如:polls_question),可以覆盖重写
  4. 如果模型类中没有指定 primary_key ,那么会自动创建一个 id 字段,自增,主键

二、MySQL数据库迁移 

image-20220929154628521

当编写了模型之后,需要将模型应用到数据库中,具体步骤如下:

  1. 创建项目model_study,及子应用model_app

    #创建项目
    $ django-admin startproject model_study
    #进入项目目录创建子应用
    $ python manage.py startapp model_app
    
  2. 配置应用,将模型对应的应用程序添加到项目的settings中:

    INSTALLED_APPS = ['model_app'
    ]
    
  3. 在settings.py中配置正确的数据库连接:

    # mysql
    DATABASES = {'default': {'ENGINE': 'django.db.backends.mysql','NAME': 'model_study','USER': 'root','PASSWORD': 'root','HOST': '127.0.0.1','PORT': 3306,}
    }
    

注意

  • 需要安装对应数据库的驱动

    • pip install mysqlclient==2.1.1

    • pip install pymysql

      # __init__.py
      import pymysql
      pymysql.install_as_MySQLdb()
      
  • 需要在mysql数据库中创建数据库model_study

2.1、创建迁移

在项目根目录的cmd中运行:

$ python manage.py makemigrations model_app

备注

  1. model_app是子应用的名称,如果不指定,那么就是对所有 INSTALLED_APPS 中的应用都进行预备迁移
  2. 指定该命令后,在对应的子应用下的 migrations 中会生成一个对应的迁移文件

2.2、正式迁移

在根目录的cmd中运行:

$ python manage.py migrate

备注

没有添加子应用名,那么就会把django项目中所有的应用都迁移到数据库中

三、sqlite3数据库迁移

image-20220929165658059

当编写了模型之后,需要将模型应用到数据库中,具体步骤如下:

  1. 创建项目model_study,及子应用model_app

    #创建项目
    $ django-admin startproject model_study
    #进入项目目录创建子应用
    $ python manage.py startapp model_app
    
  2. 配置应用,将模型对应的应用程序添加到项目的settings中:

    INSTALLED_APPS = ['model_app'
    ]
    
  3. 在settings.py中配置正确的数据库连接:

    # sqlite3
    DATABASES = {'default': {'ENGINE': 'django.db.backends.sqlite3','NAME': os.path.join(BASE_DIR, 'db.sqlite3'),}
    }
    

    注意

    • 需要安装对应数据库的驱动
    • 需要在mysql数据库中创建数据库model_study

    3.1、创建迁移

    在项目根目录的cmd中运行:

    $ python manage.py makemigrations model_app
    

    备注

    1. model_app是子应用的名称,如果不指定,那么就是对所有 INSTALLED_APPS 中的应用都进行预备迁移
    2. 指定该命令后,在对应的子应用下的 migrations 中会生成一个对应的迁移文件

    3.2、正式迁移

    在根目录的cmd中运行:

    $ python manage.py migrate
    

    备注

    没有添加子应用名,那么就会把django项目中所有的应用都迁移到数据库中

    四、更新数据库表结构

    image-20220929155039429

    不管是新增模型,还是修改已有模型后,只需要执行行命令即可:

    4.1、创建迁移

    在项目根目录的cmd中运行:

    $ python manage.py makemigrations model_app
    

    备注

    1. model_app是子应用的名称,如果不指定,那么就是对所有 INSTALLED_APPS 中的应用都进行预备迁移
    2. 指定该命令后,在对应的子应用下的 migrations 中会生成一个对应的迁移文件

    4.2、正式迁移

    在根目录的cmd中运行:

    $ python manage.py migrate
    

    备注

    没有添加子应用名,那么就会把django项目中所有的应用都迁移到数据库中

    4.3、设置表名

    在模型中建立内部类Meta设置db_table即可

    # Create your models here.
    class Person(models.Model):first_name = models.CharField(max_length=10)lname = models.CharField(max_length=30)age = models.CharField(max_length=30)class Meta:db_table = 't_person'
    

相关文章:

Django模型(一)

一、介绍 模型,就是python中的类对应数据库中的表 1.1、ORM ORM 就是通过实例对象的语法,完成关系型数据库的操作的技术,是"对象-关系映射"(Object/Relational Mapping) 的缩写 ORM 把数据库映射成对象 1.…...

【ChatGPT】文本向量化与余弦相似度:揭开文本处理的神秘面纱(5)

1、引言 在这个数字化的时代,我们每天都会面对大量的文本信息,从社交媒体到新闻报道,文本无处不在。但是,计算机要如何理解和处理这些文字呢?本文将为大家揭开其中的一些奥秘,详细解释文本向量化的概念&am…...

计算机中丢失mfc100u.dll怎么解决,详细解析mfc100u.dll丢失的解决方法

遭遇“无法找到mfc100u.dll”的错误不必过分担忧,这是一个普遍现象。许多用户在启动某些软件或游戏的时候可能会碰到这样的情况。通常,这个错误信息表明你的计算机系统中缺失了一个关键的动态链接库(DLL)文件,它可能会妨碍应用程序的顺利启动…...

代码随想录 Leetcode617.合并二叉树

题目: 代码(首刷看解析 2024年1月31日): class Solution { public:TreeNode* mergeTrees(TreeNode* root1, TreeNode* root2) {if (!root1) return root2;if (!root2) return root1;root1->val root2->val;root1->left mergeTree…...

知识价值1-github站点域名

github如果访问不上,有一个办法是hosts映射: github.com x.x.x.x github.global.ssl.fastly.net y.y.y.y assets-cdn.github.com z.z.z.z1 assets-cdn.github.com z.z.z.z2 assets-cdn.github.com z.z.z.z3 assets-cdn.github.com z.z.z.z3 那这几个域名…...

【PyRestTest】进行Benchmarking测试

PyRestTest支持通过Curl请求本身收集比较差的网络环境下的性能指标。 基准测试:它们扩展了测试中的配置元素,允许你进行相似的REST调用配置。然而,它们不对HTTP响应情况进行验证,它只收集指标数据。 下列选项被指定用于benchmar…...

cocos creator 调用预设体Prefab中的方法(调用另一个节点的方法)

调用预设体中的方法 通过cc.instantiate(this.star)创建这个预设体实例这个star预设体中添加了一个脚本组件star.ts 获取到这个脚本组件star.getComponent(‘star’).test(),并调用其中的test()方法同理可以用该方式像另一个节点中传值 //星星预设体property(cc.Pr…...

Spring 学习2 --基于xml管理Bean

1、xml管理Bean <?xml version"1.0" encoding"UTF-8"?> <beans xmlns"http://www.springframework.org/schema/beans"xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation"http://www.springfr…...

Java数组遍历深度解析

数组是Java编程中一种非常重要的数据结构&#xff0c;它用于存储相同类型的多个元素。在实际应用中&#xff0c;我们经常需要遍历数组中的所有元素&#xff0c;以进行相应的操作。理解数组的遍历方法对于编写高质量的代码至关重要。本文将深入探讨Java中的数组遍历方法。 一、…...

海洋鱼类检测7种YOLOV8NANO

【免费】海洋鱼类检测&#xff0c;7种类型&#xff0c;YOLOV8训练&#xff0c;转换成ONNX&#xff0c;OPENCV调用资源-CSDN文库 采用YOLOV8NANO训练模型&#xff0c;得到PT模型&#xff0c;然后转换成ONNX&#xff0c;供OPENCV的DNN调用&#xff0c;摆脱PYTORCH依赖&#xff0c…...

Vue2组件注册:全局组件和局部组件

在Vue 2 中&#xff0c;你可以使用全局注册和局部注册两种方式注册组件。以下是两种方式的示例&#xff1a; • 全局注册 全局注册的组件可以在整个应用中使用&#xff0c;适用于高频的通用组件。 // 在 main.js 或者入口文件中 import Vue from vue import App from ./App.v…...

AD24-原理图与PCB交互设置及PCB常用快捷键汇总

一、原理图与PCB交互设置 1、在原理图页&#xff0c;工具-交叉选择模式 2、设置完成后。在原理图页选择器件&#xff0c;然后再PCB页也会相应被选中 3、一般将网络与Pin脚的勾去掉 4、整齐排列 5、TC&#xff1a;查找网络、器件、Pin脚 二、PCB常用快捷键汇总...

CTF-WEB进阶与学习

PHP弱类型 在进行比较的时候&#xff0c;会先判断两种字符串的类型是否相等&#xff0c;再比较 在进行比较的时候&#xff0c;会先将字符串类型转化成相同&#xff0c;再比较 如果比较一个数字和字符串或者比较涉及到数字内容的字符串&#xff0c;则字符串会被转换成数值 并且…...

C++初阶 类和对象(补充)

目录 一、友元 1.1什么是友元&#xff1f; 1.2如何使用友元&#xff1f; 1.3使用友元 1.4使用友元注意事项 二、初始化列表 2.1什么是初始化列表? 2.2为什么要有初始化列表&#xff1f; 2.3使用初始化列表 2.4注意事项 一、友元 1.1什么是友元&#xff1f; 友元是一…...

《HTML 简易速速上手小册》第2章:HTML 的标签和元素(2024 最新版)

文章目录 2.1 文本格式化标签&#xff08;&#x1f3a9;✨&#x1f4dc; 网页的“时尚搭配师”&#xff09;2.1.1 基础示例&#xff1a;一篇博客的格式化2.1.2 案例扩展一&#xff1a;产品介绍页面2.1.3 案例扩展二&#xff1a;个人简历 2.2 链接和锚点&#xff08;&#x1f6a…...

2024斋月大促跨境卖家准备指南

市场覆盖西欧、中东、东南亚、北非地区的跨境电商卖家注意了&#xff0c;2024年的斋月即将开启&#xff0c;较往年日期&#xff0c;今年提前了10天左右&#xff0c;斋月的第一天预测在3月11日星期一到来。 根据Google搜索数据可知&#xff0c;目前已经进入高频“斋月”搜索期&…...

【C++干货铺】哈希结构在C++中的应用

目录 unordered系列关联式容器 unordered_map unordered_map的接口说明 1.unordered_map的构造 2. unordered_map的容量 3. unordered_map的迭代器 4. unordered_map的元素访问 5. unordered_map的查询 6. unordered_map的修改操作 7. unordered_map的桶操作 底层结构 …...

蓝桥杯算法赛第4场小白入门赛强者挑战赛

蓝桥杯算法赛第4场小白入门赛&强者挑战赛 小白1小白2小白3强者1小白4强者2小白5强者3小白6强者4强者5强者6 链接&#xff1a; 第 4 场 小白入门赛 第 4 场 强者挑战赛 小白1 直接用C内置函数即可。 #include <bits/stdc.h> using namespace std;#include <bits…...

【每日一题】6.LeetCode——轮转数组

&#x1f4da;博客主页&#xff1a;爱敲代码的小杨. ✨专栏&#xff1a;《Java SE语法》|《数据结构与算法》 ❤️感谢大家点赞&#x1f44d;&#x1f3fb;收藏⭐评论✍&#x1f3fb;&#xff0c;您的三连就是我持续更新的动力❤️ &#x1f64f;小杨水平有限&#xff0c;欢…...

Java编程练习之类的封装2

1.封装一个股票&#xff08;Stock&#xff09;类&#xff0c;大盘名称为上证A股&#xff0c;前一日的收盘点是2844.70点&#xff0c;设置新的当前值如2910.02点&#xff0c;控制台既要显示以上信息&#xff0c;又要显示涨跌幅度以及点数变化的百分比。运行效果如下&#xff1a;…...

XML Group端口详解

在XML数据映射过程中&#xff0c;经常需要对数据进行分组聚合操作。例如&#xff0c;当处理包含多个物料明细的XML文件时&#xff0c;可能需要将相同物料号的明细归为一组&#xff0c;或对相同物料号的数量进行求和计算。传统实现方式通常需要编写脚本代码&#xff0c;增加了开…...

深入剖析AI大模型:大模型时代的 Prompt 工程全解析

今天聊的内容&#xff0c;我认为是AI开发里面非常重要的内容。它在AI开发里无处不在&#xff0c;当你对 AI 助手说 "用李白的风格写一首关于人工智能的诗"&#xff0c;或者让翻译模型 "将这段合同翻译成商务日语" 时&#xff0c;输入的这句话就是 Prompt。…...

【HarmonyOS 5.0】DevEco Testing:鸿蒙应用质量保障的终极武器

——全方位测试解决方案与代码实战 一、工具定位与核心能力 DevEco Testing是HarmonyOS官方推出的​​一体化测试平台​​&#xff0c;覆盖应用全生命周期测试需求&#xff0c;主要提供五大核心能力&#xff1a; ​​测试类型​​​​检测目标​​​​关键指标​​功能体验基…...

OPENCV形态学基础之二腐蚀

一.腐蚀的原理 (图1) 数学表达式&#xff1a;dst(x,y) erode(src(x,y)) min(x,y)src(xx,yy) 腐蚀也是图像形态学的基本功能之一&#xff0c;腐蚀跟膨胀属于反向操作&#xff0c;膨胀是把图像图像变大&#xff0c;而腐蚀就是把图像变小。腐蚀后的图像变小变暗淡。 腐蚀…...

Redis的发布订阅模式与专业的 MQ(如 Kafka, RabbitMQ)相比,优缺点是什么?适用于哪些场景?

Redis 的发布订阅&#xff08;Pub/Sub&#xff09;模式与专业的 MQ&#xff08;Message Queue&#xff09;如 Kafka、RabbitMQ 进行比较&#xff0c;核心的权衡点在于&#xff1a;简单与速度 vs. 可靠与功能。 下面我们详细展开对比。 Redis Pub/Sub 的核心特点 它是一个发后…...

Linux C语言网络编程详细入门教程:如何一步步实现TCP服务端与客户端通信

文章目录 Linux C语言网络编程详细入门教程&#xff1a;如何一步步实现TCP服务端与客户端通信前言一、网络通信基础概念二、服务端与客户端的完整流程图解三、每一步的详细讲解和代码示例1. 创建Socket&#xff08;服务端和客户端都要&#xff09;2. 绑定本地地址和端口&#x…...

Linux离线(zip方式)安装docker

目录 基础信息操作系统信息docker信息 安装实例安装步骤示例 遇到的问题问题1&#xff1a;修改默认工作路径启动失败问题2 找不到对应组 基础信息 操作系统信息 OS版本&#xff1a;CentOS 7 64位 内核版本&#xff1a;3.10.0 相关命令&#xff1a; uname -rcat /etc/os-rele…...

Linux 内存管理实战精讲:核心原理与面试常考点全解析

Linux 内存管理实战精讲&#xff1a;核心原理与面试常考点全解析 Linux 内核内存管理是系统设计中最复杂但也最核心的模块之一。它不仅支撑着虚拟内存机制、物理内存分配、进程隔离与资源复用&#xff0c;还直接决定系统运行的性能与稳定性。无论你是嵌入式开发者、内核调试工…...

【电力电子】基于STM32F103C8T6单片机双极性SPWM逆变(硬件篇)

本项目是基于 STM32F103C8T6 微控制器的 SPWM(正弦脉宽调制)电源模块,能够生成可调频率和幅值的正弦波交流电源输出。该项目适用于逆变器、UPS电源、变频器等应用场景。 供电电源 输入电压采集 上图为本设计的电源电路,图中 D1 为二极管, 其目的是防止正负极电源反接, …...

人工智能 - 在Dify、Coze、n8n、FastGPT和RAGFlow之间做出技术选型

在Dify、Coze、n8n、FastGPT和RAGFlow之间做出技术选型。这些平台各有侧重&#xff0c;适用场景差异显著。下面我将从核心功能定位、典型应用场景、真实体验痛点、选型决策关键点进行拆解&#xff0c;并提供具体场景下的推荐方案。 一、核心功能定位速览 平台核心定位技术栈亮…...