Django模型(一)
一、介绍

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

ORM 把数据库映射成对象

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
);
说明
- 模型类必须继承models.Model
- 每个属性对应数据库表中的一个字段
- 表名自动使用 应用_类名 的小写(如:polls_question),可以覆盖重写
- 如果模型类中没有指定 primary_key ,那么会自动创建一个 id 字段,自增,主键
二、MySQL数据库迁移

当编写了模型之后,需要将模型应用到数据库中,具体步骤如下:
-
创建项目model_study,及子应用model_app
#创建项目 $ django-admin startproject model_study #进入项目目录创建子应用 $ python manage.py startapp model_app -
配置应用,将模型对应的应用程序添加到项目的settings中:
INSTALLED_APPS = ['model_app' ] -
在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
备注
- model_app是子应用的名称,如果不指定,那么就是对所有 INSTALLED_APPS 中的应用都进行预备迁移
- 指定该命令后,在对应的子应用下的 migrations 中会生成一个对应的迁移文件
2.2、正式迁移
在根目录的cmd中运行:
$ python manage.py migrate
备注
没有添加子应用名,那么就会把django项目中所有的应用都迁移到数据库中
三、sqlite3数据库迁移

当编写了模型之后,需要将模型应用到数据库中,具体步骤如下:
-
创建项目model_study,及子应用model_app
#创建项目 $ django-admin startproject model_study #进入项目目录创建子应用 $ python manage.py startapp model_app -
配置应用,将模型对应的应用程序添加到项目的settings中:
INSTALLED_APPS = ['model_app' ] -
在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备注
- model_app是子应用的名称,如果不指定,那么就是对所有 INSTALLED_APPS 中的应用都进行预备迁移
- 指定该命令后,在对应的子应用下的 migrations 中会生成一个对应的迁移文件
3.2、正式迁移
在根目录的cmd中运行:
$ python manage.py migrate备注
没有添加子应用名,那么就会把django项目中所有的应用都迁移到数据库中
四、更新数据库表结构

不管是新增模型,还是修改已有模型后,只需要执行行命令即可:
4.1、创建迁移
在项目根目录的cmd中运行:
$ python manage.py makemigrations model_app备注
- model_app是子应用的名称,如果不指定,那么就是对所有 INSTALLED_APPS 中的应用都进行预备迁移
- 指定该命令后,在对应的子应用下的 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编程中一种非常重要的数据结构,它用于存储相同类型的多个元素。在实际应用中,我们经常需要遍历数组中的所有元素,以进行相应的操作。理解数组的遍历方法对于编写高质量的代码至关重要。本文将深入探讨Java中的数组遍历方法。 一、…...
海洋鱼类检测7种YOLOV8NANO
【免费】海洋鱼类检测,7种类型,YOLOV8训练,转换成ONNX,OPENCV调用资源-CSDN文库 采用YOLOV8NANO训练模型,得到PT模型,然后转换成ONNX,供OPENCV的DNN调用,摆脱PYTORCH依赖,…...
Vue2组件注册:全局组件和局部组件
在Vue 2 中,你可以使用全局注册和局部注册两种方式注册组件。以下是两种方式的示例: • 全局注册 全局注册的组件可以在整个应用中使用,适用于高频的通用组件。 // 在 main.js 或者入口文件中 import Vue from vue import App from ./App.v…...
AD24-原理图与PCB交互设置及PCB常用快捷键汇总
一、原理图与PCB交互设置 1、在原理图页,工具-交叉选择模式 2、设置完成后。在原理图页选择器件,然后再PCB页也会相应被选中 3、一般将网络与Pin脚的勾去掉 4、整齐排列 5、TC:查找网络、器件、Pin脚 二、PCB常用快捷键汇总...
CTF-WEB进阶与学习
PHP弱类型 在进行比较的时候,会先判断两种字符串的类型是否相等,再比较 在进行比较的时候,会先将字符串类型转化成相同,再比较 如果比较一个数字和字符串或者比较涉及到数字内容的字符串,则字符串会被转换成数值 并且…...
C++初阶 类和对象(补充)
目录 一、友元 1.1什么是友元? 1.2如何使用友元? 1.3使用友元 1.4使用友元注意事项 二、初始化列表 2.1什么是初始化列表? 2.2为什么要有初始化列表? 2.3使用初始化列表 2.4注意事项 一、友元 1.1什么是友元? 友元是一…...
《HTML 简易速速上手小册》第2章:HTML 的标签和元素(2024 最新版)
文章目录 2.1 文本格式化标签(🎩✨📜 网页的“时尚搭配师”)2.1.1 基础示例:一篇博客的格式化2.1.2 案例扩展一:产品介绍页面2.1.3 案例扩展二:个人简历 2.2 链接和锚点(Ὢ…...
2024斋月大促跨境卖家准备指南
市场覆盖西欧、中东、东南亚、北非地区的跨境电商卖家注意了,2024年的斋月即将开启,较往年日期,今年提前了10天左右,斋月的第一天预测在3月11日星期一到来。 根据Google搜索数据可知,目前已经进入高频“斋月”搜索期&…...
【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 链接: 第 4 场 小白入门赛 第 4 场 强者挑战赛 小白1 直接用C内置函数即可。 #include <bits/stdc.h> using namespace std;#include <bits…...
【每日一题】6.LeetCode——轮转数组
📚博客主页:爱敲代码的小杨. ✨专栏:《Java SE语法》|《数据结构与算法》 ❤️感谢大家点赞👍🏻收藏⭐评论✍🏻,您的三连就是我持续更新的动力❤️ 🙏小杨水平有限,欢…...
Java编程练习之类的封装2
1.封装一个股票(Stock)类,大盘名称为上证A股,前一日的收盘点是2844.70点,设置新的当前值如2910.02点,控制台既要显示以上信息,又要显示涨跌幅度以及点数变化的百分比。运行效果如下:…...
基于距离变化能量开销动态调整的WSN低功耗拓扑控制开销算法matlab仿真
目录 1.程序功能描述 2.测试软件版本以及运行结果展示 3.核心程序 4.算法仿真参数 5.算法理论概述 6.参考文献 7.完整程序 1.程序功能描述 通过动态调整节点通信的能量开销,平衡网络负载,延长WSN生命周期。具体通过建立基于距离的能量消耗模型&am…...
mongodb源码分析session执行handleRequest命令find过程
mongo/transport/service_state_machine.cpp已经分析startSession创建ASIOSession过程,并且验证connection是否超过限制ASIOSession和connection是循环接受客户端命令,把数据流转换成Message,状态转变流程是:State::Created 》 St…...
DBAPI如何优雅的获取单条数据
API如何优雅的获取单条数据 案例一 对于查询类API,查询的是单条数据,比如根据主键ID查询用户信息,sql如下: select id, name, age from user where id #{id}API默认返回的数据格式是多条的,如下: {&qu…...
Map相关知识
数据结构 二叉树 二叉树,顾名思义,每个节点最多有两个“叉”,也就是两个子节点,分别是左子 节点和右子节点。不过,二叉树并不要求每个节点都有两个子节点,有的节点只 有左子节点,有的节点只有…...
ip子接口配置及删除
配置永久生效的子接口,2个IP 都可以登录你这一台服务器。重启不失效。 永久的 [应用] vi /etc/sysconfig/network-scripts/ifcfg-eth0修改文件内内容 TYPE"Ethernet" BOOTPROTO"none" NAME"eth0" DEVICE"eth0" ONBOOT&q…...
服务器--宝塔命令
一、宝塔面板安装命令 ⚠️ 必须使用 root 用户 或 sudo 权限执行! sudo su - 1. CentOS 系统: yum install -y wget && wget -O install.sh http://download.bt.cn/install/install_6.0.sh && sh install.sh2. Ubuntu / Debian 系统…...
MySQL 部分重点知识篇
一、数据库对象 1. 主键 定义 :主键是用于唯一标识表中每一行记录的字段或字段组合。它具有唯一性和非空性特点。 作用 :确保数据的完整性,便于数据的查询和管理。 示例 :在学生信息表中,学号可以作为主键ÿ…...
【Linux】Linux安装并配置RabbitMQ
目录 1. 安装 Erlang 2. 安装 RabbitMQ 2.1.添加 RabbitMQ 仓库 2.2.安装 RabbitMQ 3.配置 3.1.启动和管理服务 4. 访问管理界面 5.安装问题 6.修改密码 7.修改端口 7.1.找到文件 7.2.修改文件 1. 安装 Erlang 由于 RabbitMQ 是用 Erlang 编写的,需要先安…...
node.js的初步学习
那什么是node.js呢? 和JavaScript又是什么关系呢? node.js 提供了 JavaScript的运行环境。当JavaScript作为后端开发语言来说, 需要在node.js的环境上进行当JavaScript作为前端开发语言来说,需要在浏览器的环境上进行 Node.js 可…...
2025.6.9总结(利与弊)
凡事都有两面性。在大厂上班也不例外。今天找开发定位问题,从一个接口人不断溯源到另一个 接口人。有时候,不知道是谁的责任填。将工作内容分的很细,每个人负责其中的一小块。我清楚的意识到,自己就是个可以随时替换的螺丝钉&…...
