django使用mysql数据库

Django开 发操作数据库比使用pymysql操作更简单,内部提供了ORM框架。
下面是pymysql 和orm操作数据库的示意图,pymysql就是mysql的驱动,代码直接操作pymysql ,需要自己写增删改查的语句
django 就是也可以使用pymysql、mysqlclient作为驱动,但是目前对mysqlclient的支持更好,在驱动的基础只上封装了orm框架,不用直接去写sql,是操作更简单了。
在这里插入图片描述

1、安装第三方模块

pip install mysqlclient

我的是windows环境,这样安装的时候报错,我们需要先下载需要先下载mysqlclient whl文件
下载地址:
https://www.lfd.uci.edu/~gohlke/pythonlibs/#mysqlclient
或者https://pypi.org/project/mysqlclient/#files
找对对应的python版本下载,我的是3.7就下载这个
在这里插入图片描述
下载后,放到一个目录,cmd 进入到该目录,再执行

pip install mysqlclient-1.4.6-cp37-cp37m-win_amd64.whl

就可以安装成功了。

2、ORM

ORM可以帮助我们做两件事:

  • 创建、修改、删除数据库中的表(不用你写SQL语句)。[无法创建数据库],数据库我们使用其它工手动创建
  • 操作表中的数据(不用写SQL语句)

django连接数据库

在settings.py中配置mysql

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

创建表

在app01目录下的models.py 中写一个类,类名是UserInfo, 那么表面就会是app01_userinfo,django会自动加上app的名字
字段 通过models来创建,选择不同的字段类型,常用的字段类型有:

CharField 字符型
IntegerField 整形
DecimalField 浮点型
DateField 日期类型,只包含年月日
DateTimeField 日期类型,包含年月日时分秒
BigIntegerField 长整型
SmallIntegerField 小整型

from django.db import models
class UserInfo(models.Model):name = models.CharField(max_length=32)password = models.CharField(max_length=64)age = models.IntegerField()

在app01下面的models.py中创建一个UserInfo的类,必须继承models.Model
django 会帮我们自己创建一个表名为app01_UserInfo的表,包含字段name, password,age
相当于执行下面语句
create table app01_userinfo(
id bigint auto_increment primary key,
name varchar(32),
password varchar(64),
age int
);
每个表都会自动给创建id列

执行命令创建数据库表: 注意app要先注册

py -3 manage.py makemigrations
py -3 manage.py migrate

如果已经手动创建了admin表的,要用orm 来连接数据库可以,又不希望django改变表明,指定数据表名称,通过内部类 Meta指定表名

from django.db import modelsclass admin(models.Model):name = models.CharField(max_length=32)password = models.CharField(max_length=64)age = models.IntegerField()# 添加一个时间字段create_time = models.DateTimeField(null=True)class Meta:db_table = 'admin'

在表中新增列时,由于已存在列中可能已有数据,所以新增列必须要指定新增列对应的数据:

  • 手动输入一个值。
  • 设置默认值
age=mode1s.IntegerField(default=2)
  • 允许为空
data=models.IntegerField(null=True, blank=True )

对表的操作

一般是在实现的函数中来操作数据库
在views.py中要导入 from app01 import models
查询类

models.UserInfo.objects.all()     #查询数据库中所有内容,返回的是[obj,obj,obj],一行数据一个对象
models.UserInfo.objects.filter(id=nid).first()     #根据条件查询,只获取第一个对象

对字符串的查询

models.PrettyNum.objects.filter(mobile='136')                                 #等于136
models.PrettyNum.objects.filter(mobile__startswith='136')                     #以136开头
models.PrettyNum.objects.filter(mobile__endswith='888')                       #以888结尾
models.PrettyNum.objects.filter(mobile__contains='136')                       #包含136

对于数字的查询

models.PrettyNum.objects.filter(id=12)       #等于12
models.PrettyNum.objects.filter(id__gt=12)    #大于12
models.PrettyNum.objects.filter(id__gte=12)    #大于等于12
models.PrettyNum.objects.filter(id__lt=12)    #小于12
models.PrettyNum.objects.filter(id__lte=12)    #小于等于12

查询支持两种不同的写法

models.PrettyNum.objects.filter(id=3,mobile='12312341234')data_dict = {'mobile':'13413241234','id':3}
models.PrettyNum.objects.filter(**data_dict)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/22919.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

迁移学习:使用Restnet预训练模型构建高效的水果识别模型

目录 引言 1 迁移学习 1.1 什么是迁移学习 1.2 迁移学习能解决什么问题 1.3 迁移学习面临的三个问题 1.3.1 何时迁移 1.3.2 何处迁移 1.3.3 如何迁移 1.4 迁移学习的分类 1.4.1 按照学习方式的划分 1.4.2 按照使用方法的划分 2 Restnet网络 2.1 Restnet介绍 2.2 Re…

LangChain:打造自己的LLM应用 | 京东云技术团队

1、LangChain是什么 LangChain是一个框架,用于开发由LLM驱动的应用程序。可以简单认为是LLM领域的Spring,以及开源版的ChatGPT插件系统。核心的2个功能为: 1)可以将 LLM 模型与外部数据源进行连接。 2)允许与 LLM 模…

element-ui树形表格,左边勾选,右边显示选中的数据-功能(如动图)

功能如图 功能需求 表格树形表格勾选数据,右边显示对应勾选的数据内容,选中客户,自动勾选所有的店铺(子级),选中其中一个店铺,自动勾选上客户(父级),同时会存在只有客户(下面没有子级的情况&am…

Apache Flink概述

Flink 是构建在数据流之上的一款有状态的流计算框架,通常被人们称为第三代大数据分析方案 第一代大数据处理方案:基于Hadoop的MapReduce 静态批处理 | Storm 实时流计算 ,两套独立的计算引擎,难度大(2014年9月&#x…

Java版工程行业管理系统源码-专业的工程管理软件-em提供一站式服务 em

​ Java版工程项目管理系统 Spring CloudSpring BootMybatisVueElementUI前后端分离 功能清单如下: 首页 工作台:待办工作、消息通知、预警信息,点击可进入相应的列表 项目进度图表:选择(总体或单个)项目…

STM32存储左右互搏 I2C总线读写EEPROM ZD24C1MA

STM32存储左右互搏 I2C总线读写EEPROM ZD24C1MA 在较低容量存储领域,EEPROM是常用的存储介质,不同容量的EEPROM的地址对应位数不同,在发送字节的格式上有所区别。EEPROM是非快速访问存储,因为EEPROM按页进行组织,在连…

如何用 Java 获取 DOCX 文档的注释

现代文档协作工具有助于在比以往更紧迫的期限内从头到尾推动项目。前数字化项目协作依赖于手动标记和注释来在分发之前修改/改进关键报告和备忘录,而不同行业的当代团队可以使用可访问的简单修订工具来实现相同的基本目标,甚至更多。 DOCX 文件中的所有用…

拓扑排序--代码

模板 常用代码模板3——搜索与图论 - AcWing 拓扑排序 —— 模板题 AcWing 848. 有向图的拓扑序列 时间复杂度 O(nm), n 表示点数&#xff0c;m 表示边数 bool topsort() {int hh 0, tt -1;// d[i] 存储点i的入度for (int i 1; i < n; i )if (!d[i])q[ tt] i;while…

caj文件怎么转换成pdf?了解一下这种方法

caj文件怎么转换成pdf&#xff1f;如果你曾经遇到过需要将CAJ文件转换成PDF格式的情况&#xff0c;那么你一定知道这是一件麻烦的事情。幸运的是&#xff0c;现在有许多软件和工具可以帮助你完成这项任务。下面就给大家介绍一款使用工具。 【迅捷PDF转换器】是一款功能强大的工…

数据结构----c语言复习

数据结构----c语言复习 一.类型 1.类型的种类 char 1个字节 范围-128~127 short 2个字节 范围-32768~32767 int 4个字节 范围-2147483648~2147483647 long 4个字节 范围-2147483648~2147483647 float 4个字节 有效位为6~7位 float 8个字节 有效位为15~16为 unsigned c…

基于数据库 Sqlite3 的 root 管理系统

1.服务器 1.1服务器函数入口 #include "server.h"int main(int argc, char const *argv[]) {char buf[128] {0};char buf_ID[256] {0};// 接收报错信息判断sqlite3 *db;// 创建员工信息的表格,存在则打开db Sqlite_Create();if (db NULL){printf("sqlite_…

启动RocketMQ报错

说明&#xff1a;启动RocketMQ消费者时&#xff0c;报以下错误&#xff1a;java.lang.IllegalStateException&#xff1a;Failed to start RocketMQ push consumer. 解决&#xff1a;看下所有的监听器类&#xff0c;检查是不是有相同的消费者组名&#xff0c;注释掉其中一个即可…

BI技巧丨利用OFFSET计算同环比

微软最近更新了很多开窗函数&#xff0c;其内部参数对比以往的DAX函数来说&#xff0c;多了很多&#xff0c;这就导致学习的时间成本直线上升。 而且对于新增函数的应用场景&#xff0c;很多小伙伴也是一知半解的&#xff0c;本期我们就来聊一聊关于最近新增的开窗函数——OFF…

Docker网络模型使用详解(2)Docker网络模式

安装Docker时会自动创建3个网络&#xff0c;可以使用docker network ls命令列出这些网络。 [rootlocalhost ~]# docker network ls NETWORK ID NAME DRIVER SCOPE ebcfad6f4255 bridge bridge local b881c67f8813 compose_lnmp_lnmp…

百度云上传身份证获取身份信息封装

1.目录结构 -script_discerm ------------包 -discerm.py --------------主要逻辑 -__init__.py -id_care---------------文件夹 存放图片 2.安装模块 pip install urllib31.23 pip install requests pip install base64 3.各文件内容 2.1 discerm.py import jsonimpo…

介绍Sping Boot的5个扩展点

1、初始化器ApplicationContextInitializer 我们在启动Spring Boot项目的时候&#xff0c;是执行这样一个方法来启动的 我们一层一层往下点&#xff0c;最终发现执行的是这个方法 所以我们在启动项目的时候也可以这样启动 new SpringApplication(SpringbootExtensionPointAp…

无脑入门pytorch系列(二)—— torch.mean

本系列教程适用于没有任何pytorch的同学&#xff08;简单的python语法还是要的&#xff09;&#xff0c;从代码的表层出发挖掘代码的深层含义&#xff0c;理解具体的意思和内涵。pytorch的很多函数看着非常简单&#xff0c;但是其中包含了很多内容&#xff0c;不了解其中的意思…

Kindling the Darkness: A Practical Low-light Image Enhancer论文阅读笔记

这是ACMMM2019的一篇有监督暗图增强的论文&#xff0c;KinD其网络结构如下图所示&#xff1a; 首先是一个分解网络分解出R和L分量&#xff0c;然后有Restoration-Net和Adjustment-Net分别去对R分量和L分量进一步处理&#xff0c;最终将处理好的R分量和L分量融合回去。这倒是很常…

linux-MySQL的数据目录

总结&#xff1a; window中的my.ini linux 中 /etc/my.cnfwindow中的D:\soft\mysql-5.7.35-winx64\data linux 中 /var/lib/mysql 1.查找与mysql有关的目录 find / -name mysql [rootVM-4-6-centos etc]# find / -name mysql /opt/mysql /etc/selinux/targeted/tmp/modul…

ModuleNotFoundError: No module named ‘lsb_release‘

Ubuntu 重装python版本导致的问题 $ lsb_release -a # 使用命令查看报错详情 Traceback (most recent call last):File "/usr/bin/lsb_release", line 25, in <module> # 这个路径很重要import lsb_release ModuleNotFoundError: No module named lsb_re…