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

Django后端开发——模型层及ORM介绍

文章目录

  • 参考资料
  • Django配置MySQL
    • 安装mysqlclient
    • 创建数据库
      • 进入数据库的操作
      • 可能遇到的问题及解决方案
      • Pycharm配置settings.py
  • 模型![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/c83753397bf6481d8defde26537903bf.png)
  • ORM
    • 介绍
    • 示例
      • 终端:
      • settings.py
      • bookstore的models.py
      • 效果


参考资料

B站网课:点击蓝色字体跳转
或者复制链接到浏览器打开:https://www.bilibili.com/video/BV1vK4y1o7jH?p=15&vd_source=597e21cf34ffcdce468ba00be2177e8a


Django配置MySQL

安装mysqlclient

在这里插入图片描述

一般都有python3-dev,没有default-libmysqlclient-dev,需要安装default-libmysqlclient-dev

然后安装mysqlclient

sudo pip3 install mysqlclient

若安装default-libmysqlclient-dev时报错‘pkg-config: not found’,这是由于缺少 ‘pkg-config’ 工具导致的,需要安装 pkg-config 工具

sudo apt-get update
sudo apt-get install pkg-config

安装完成后,再次尝试安装 mysqlclient:

sudo pip3 install mysqlclient

看是否安装成功:

sudo pip3 freeze|grep -i 'mysql'

若出现版本号,则安装成功

创建数据库

在这里插入图片描述

进入数据库的操作

终端:

sudo mysql -u root -p

输入虚拟机管理员密码

Enter password:这里,没有密码直接回车,无需输入

顺利进入mysql
在这里插入图片描述
数据库名往往与项目名一致

create database mysite3 default charset utf8;

可能遇到的问题及解决方案

1.报错:ERROR 2002 (HY000): Can’t connect to local MySQL server through socket ‘/var/run/mysqld/mysqld.sock’ (2)
分析: MySQL 客户端无法通过指定的 Unix 套接字连接到本地 MySQL 服务器。常见原因包括 MySQL 服务器未启动或者 MySQL 服务器套接字文件路径配置错误
解决方案:
在这里插入图片描述

2.在解决问题1时报错:Unit mysql.service could not be found.
分析:表明系统上可能没有安装 MySQL 服务器,或者 MySQL 服务器安装后的服务名称可能不是 mysql
解决方案:
在这里插入图片描述
命令行:

dpkg -l | grep mysql-server
sudo apt-get update
sudo apt-get install mysql-server

安装了mysql服务器后再次尝试:

sudo mysql -u root -p

Pycharm配置settings.py

settings.py-DATABASES

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

在这里插入图片描述

模型在这里插入图片描述

ORM

介绍

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

示例

在这里插入图片描述

终端:

cd django
cd day03
cd mysite3
python3 manage.py startapp bookstore

settings.py

在INSTALLED_APPS中添加‘bookstore’

bookstore的models.py

from django.db import models# Create your models here.
class Book(models.Model):title = models.CharField('书名',max_length=50,default='')price = models.DecimalField('价格',max_digits=7,decimal_places=2)

每一个类对应一个表,每一个属性对应一个字段
此时在数据库中是查询不到表格的:
进入数据库–选中mysite3数据库-查询表格

use mysite3
show tables;

在这里插入图片描述

这是因为需要数据库的迁移(同步至数据库)
在这里插入图片描述

python3 manage.py makemigrations
python3 manage.py migrate

效果

再次从mysql查看表格:
在这里插入图片描述
可以看到数据库的表格已经完成迁移

查看表格:

desc bookstore_book;

在这里插入图片描述
可以看到刚刚创建的表格

相关文章:

  • disql备份还原
  • 飞天使-k8s知识点18-kubernetes实操3-pod的生命周期
  • 普中51单片机学习(八)
  • UE4 C++联网RPC教程笔记(一)(第1~4集)
  • 生成式 AI - Diffusion 模型的数学原理(4)
  • CVE-2022-24652 漏洞复现
  • 嵌入式面试:瑞芯微
  • 【ArcGIS微课1000例】0103:导出点、线、面要素的折点坐标值
  • Code Composer Studio (CCS) - Breakpoint (断点)
  • 【数据结构与算法】图的搜索——广度优先遍历、最小生成树
  • Java基础知识学习:深入理解Java中的类与对象,Java重要知识点概念性解释,结合实例讲解请看下一篇博文
  • Ansible file文件模块 设置文件的属性,比如创建文件、创建链接文件、删除文件
  • 《白话C++》第10章 STL和boost,Page88 std::shared_ptr常用功能02
  • 数据分析 — 动画图 pyecharts
  • 服务端和客户端以及前后端相关概念区分
  • [分享]iOS开发-关于在xcode中引用文件夹右边出现问号的解决办法
  • 【技术性】Search知识
  • 【跃迁之路】【735天】程序员高效学习方法论探索系列(实验阶段492-2019.2.25)...
  • android图片蒙层
  • canvas 五子棋游戏
  • FastReport在线报表设计器工作原理
  • js继承的实现方法
  • Linux链接文件
  • Magento 1.x 中文订单打印乱码
  • MQ框架的比较
  • Node项目之评分系统(二)- 数据库设计
  • PHP的Ev教程三(Periodic watcher)
  • 安装python包到指定虚拟环境
  • 高度不固定时垂直居中
  • 排序算法学习笔记
  • 设计模式 开闭原则
  • 一起来学SpringBoot | 第三篇:SpringBoot日志配置
  • C# - 为值类型重定义相等性
  • ​queue --- 一个同步的队列类​
  • #gStore-weekly | gStore最新版本1.0之三角形计数函数的使用
  • #HarmonyOS:软件安装window和mac预览Hello World
  • (1)Android开发优化---------UI优化
  • (173)FPGA约束:单周期时序分析或默认时序分析
  • (pojstep1.1.2)2654(直叙式模拟)
  • (react踩过的坑)Antd Select(设置了labelInValue)在FormItem中initialValue的问题
  • (附程序)AD采集中的10种经典软件滤波程序优缺点分析
  • (附源码)ssm失物招领系统 毕业设计 182317
  • (亲测成功)在centos7.5上安装kvm,通过VNC远程连接并创建多台ubuntu虚拟机(ubuntu server版本)...
  • (三)Pytorch快速搭建卷积神经网络模型实现手写数字识别(代码+详细注解)
  • (十六)串口UART
  • (详细版)Vary: Scaling up the Vision Vocabulary for Large Vision-Language Models
  • (转)AS3正则:元子符,元序列,标志,数量表达符
  • (转)chrome浏览器收藏夹(书签)的导出与导入
  • (转)Linux整合apache和tomcat构建Web服务器
  • *2 echo、printf、mkdir命令的应用
  • . ./ bash dash source 这五种执行shell脚本方式 区别
  • .NET BackgroundWorker
  • .net core 3.0 linux,.NET Core 3.0 的新增功能
  • .net core Swagger 过滤部分Api
  • .net 使用$.ajax实现从前台调用后台方法(包含静态方法和非静态方法调用)