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

Django和Mysql数据库

Django学习笔记

Django和Mysql数据库

Django开发操作数据库更简单,内部提供了ORM框架。

1)安装mysqlclient

pip3 install mysqlclient

2)ORM

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

1.创建、修改、修改数据库中的表(不用写sql语句)[不能创建数据库]

2.操作表中的数据(不用写sql语句)

3)创建数据库

create database database_name;

4)配置Django连接数据库

修改settings.py文件

DATABASES = {'default': {'ENGINE': 'django.db.backends.mysql',       #数据库类型'NAME': 'helloWorld',                       #数据库名称'USER': 'root',                             #数据库用户名'PASSWORD': 'xxxx',                         #数据库密码'HOST': 'xxx.xxx.xxx.xxx',                  #数据库主机地址'PORT': '33060',                            #数据库端口号}
}

5)在modeles.py中创建一个用于生成表的类

from django.db import models# Create your models here.
class userInfo(models.Model):     #这个类用于生成表name =  models.CharField(max_length=32)      #定义name字段password = models.CharField(max_length=16)   #定义password字段age = models.IntegerField()                  #定义age字段"""
Django执行上面这个类的时候,相当于执行了建表操作(新建的表名为“app名_类名”),相当于以下代码:
create table app1_userinfo(id bigint auto_increment primary key,    name varchar(32),password varchar(16),age int)
"""

6)创建表,将数据自带表迁移到数据库中

python manage.py makemigrations    #生成迁移文件 
python manage.py migrate           #进行迁移

迁移完后,在数据库中应该可以看到一些django的表

注意:

如果不执行迁移,那么在使用的时候,有些数据需要存到自带的表中,那么就会报错。

这样就可以看到数据库中已创建好了一张表

在这里插入图片描述

如果要删除表,只需要把models.py中的类删除,重新执行表迁移就可以。

如果要修改表,只需要修改models.py中的类,重新执行表迁移就可以。

注意:

在新建 的表中会自动增加一个ID字段,并且为auto_increment 和primary key

如果在表中增加了新字段,进行迁移的时候会有两个选项:

选项1 :手动指定一个默认值;

选项2:退出,可以在类中将将新增字段添加一个默认值;

如:

six=models.CharField(max_length=4,defalut=l)

或者设置新增字段允许为空

six=models.CharField(max_length=4,null=True,blank=True)

1.13操作数据

1)新增记录

from app1 import models              #引入models模块
models.<class_name>.objects.create(<field1>=<value>,<field2>=<value>.....)#相当于以下sql语句
#insert into <table_name> (<field1>,<field2>...) values(<value1>,<value2>.....)

2)删除记录

models.<class_name>.objects.filter(条件).delete()     #删除满足条件的数据
models.<class_name>.objects.all.delete()             #删除表中所有的数据

3)查询数据

data_list1 = models.<class_name>.objects.all()         #获取表中的所有数据QuerySet类型
for row in data_list1:                                  #遍历所有数据print(row.<field>)                                  #获取指定字段的数据
data_list2 = models.<class_name>.objects.filter(条件)    #获取满足指定条件的数据

4)修改数据

#修改所有记录的指定字段值
models.<class_name>.objects.all().update(<field>=<new value>)
#修改符合条件的记录的指定字段值
models.<class_name>.objects.filter(条件).update(<field>=<new value>)
http://www.lryc.cn/news/318664.html

相关文章:

  • [蓝桥杯]-最大的通过数-CPP-二分查找、前缀和
  • 安卓UI面试题 26-30
  • CPU、GPU、IPU、NPU、TPU、LPU、MCU、MPU、SOC、DSP、FPGA、ASIC、GPP、ECU、
  • 鸿蒙车载原生开发,拓展新版图
  • 15届蓝桥杯第二期模拟赛题单详细解析
  • mysql统计数据库大小
  • centos防火墙firewall-cmd限定特定的ip访问
  • 创维汽车与创维光伏储能亮相2024上海AWE,感受制造业的升级变迁
  • Kafka配置SASL_PLAINTEXT权限。常用操作命令,创建用户,topic授权
  • [Java、Android面试]_05_内存泄漏和内存溢出
  • MySQL-HMA 高可用故障切换
  • 深度学习 精选笔记(11)深度学习计算相关:GPU、参数、读写、块
  • 深度学习 Day27——J7对于ResNeXt-50算法的思考
  • 华为配置敏捷分布式SFN漫游实验
  • 续上篇 qiankun 微前端配置
  • AI日报:欧盟人工智能法案通过后行业面临合规障碍
  • 音视频如何快速转二维码?在线生成音视频活码的教程
  • 开源堡垒机Jumpserver安装教程
  • CentOS 7 socat命令端口转发 —— 筑梦之路
  • SeaTunnel 2.3.4 Cluster in K8S
  • 多模态学习 - 视觉语言预训练综述-2023-下游任务、数据集、基础知识、预训练任务、模型
  • Vite为什么比Webpack快
  • 因聚而生 数智有为丨软通动力携子公司鸿湖万联亮相华为中国合作伙伴大会2024
  • 724.寻找数组的中心下标
  • Selenium 是什么?简单了解Selenium
  • 钡铼技术有限公司R40路由器工业4G让养殖环境监控更高效
  • vue2 / vue3 路由(返回跳转)时判断 + 取消跳转
  • 【设计模式】Java 设计模式之代理模式(Proxy Pattern)
  • 逻辑数据平台的 NoETL 之道(内含QA)
  • 低代码与数智制造:引领软件开发的革新之旅