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

Django学习记录:使用ORM操作MySQL数据库并完成数据的增删改查

Django学习记录:使用ORM操作MySQL数据库并完成数据的增删改查

数据库操作

MySQL数据库+pymysql

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

安装第三方模块
pip install mysqlclient

ORM可以做的事:

1、创建、修改、删除数据库中的表(不用写SQL语句)。【无法创建数据库】

2、操作表中的数据(不用写SQL语句)。

1、自己创建数据库

1)启动MySQL服务

2)自带工具创建数据库

2、django连接数据库

在setting.py文件中进行配置和修改:此处连接的是本机的mysql数据库

DATABASES = {'default': {'ENGINE': 'django.db.backends.mysql','NAME':  'dbname', # 数据库名字'USER':  'root','PASSWORD':  'xxxxxx','HOST':  'localhost','PORT':  3306,}
}
3、django操作表
  • 创建表

  • 删除表

  • 修改表

    创建表:在models.py文件中:

class UserInfo(models.Model):name = models.CharField(max_length=32) # charfield 字符串类型password = models.CharField(max_length=64)age = models.IntegerField() # IntegerField 整数类型

相当于在MySQL中运行了

create table app01_userinfo(id bigint auto_increment primary key,name varchar(32),password varchar(64),age int
);

然后,在terminal中依次执行命令:(注意:app需要提前注册。)

python manage.py makemigrations
python manage.py migrate

即可在mysql中创建好app01_userinfo这个文件

在这里插入图片描述

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

  1. 手动输入一个值

  2. 设置默认值

    size = models.IntegerField(default=2)
    
  3. 允许为空

    data = models.IntegerField(null=True, blank=True)
    

在开发中如果想要对表结构进行调整:

  • 在models.py文件中操作类即可。

  • 在terminal执行命令

    python manage.py makemigrations
    python manage.py migrate
    

数据的增删改查

from app01 import models

1、新建

    # ###新建###models.Department.objects.create(title="销售部")models.Department.objects.create(title="IT部")models.Department.objects.create(title="运营部")models.UserInfo.objects.create(name="dumpling", password="123", age="22")models.UserInfo.objects.create(name="noodles", password="111", age="20")

2、删除

# ###删除###models.UserInfo.objects.filter(id=3).delete()models.Department.objects.all().delete()

3、查看(获取数据)

    ###获取数据####获取的是列表,列表是一行一行的数据#data_list = [行(对象) 行 行]   QuerySet类型data_list = models.UserInfo.objects.all()for obj in data_list:print(obj.id, obj.name, obj.password, obj.age)# 寻找id=1的数据。data_list = [对象,],这个方法取到的还是QuerySet类型data_list = models.UserInfo.objects.filter(id=1)# 取对象中的第一个,这个方法就能直接将第一行对象取出来row_obj = models.UserInfo.objects.filter(id=1).first()print(row_obj.id, row_obj.name, row_obj.password, row_obj.age)

4、更新

	models.UserInfo.objects.all().update(password=999)models.UserInfo.objects.filter(id=2).update(age=999)
http://www.lryc.cn/news/109423.html

相关文章:

  • React Hooks 中的 useEffect(副作用)
  • [CKA]考试之持久化存储卷PersistentVolume
  • 基于LLM的SQL应用程序开发实战(一)
  • 如何批量实现多行合并后居中
  • 【深度学习_TensorFlow】手写数字识别
  • antv/l7地图,鼠标滚动,页面正常滑动-- 我们忽略的deltaY
  • 再续AM335x经典,米尔TI AM62x核心板上市,赋能新一代HMI
  • springboot和Django哪一个做web服务器框架更好
  • C#核心知识回顾——21.归并排序
  • 基于netty的rpc远程调用
  • RabbitMQ输出日志配置
  • 解决一个Sqoop抽数慢的问题,yarn的ATSv2嵌入式HBASE崩溃引起
  • 为Android构建现代应用——应用导航设计
  • 聊聊 Docker 和 Dockerfile
  • element表格+表单+表单验证结合u
  • 数据库:MYSQL参数max_allowed_packet 介绍
  • 基于DiscordMidjourney API接口实现文生图
  • springboot+vue农产品特产商城销售平台_50kf2 多商家
  • 【深度学习_TensorFlow】感知机、全连接层、神经网络
  • 软件测试(功能、接口、性能、自动化)详解
  • Oracle表段中的高水位线HWM
  • 【福建事业单位-推理判断】03类别推理
  • Leetcode-每日一题【剑指 Offer 05. 替换空格】
  • zookeeper+kafka分布式消息队列集群的部署
  • VR全景旅游,智慧文旅发展新趋势!
  • 详解EMBER数据集中对PE文件提取ByteEntropyHistogram特征
  • 垃圾回收机制和常用的算法
  • 【PostgreSQL】系列之 一 schema详解(二)
  • 性能优化-react路由懒加载和组件懒加载
  • 静态网页加速器:优化性能和交付速度的 Node.js 最佳实践