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

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

数据库操作

MySQL数据库+pymysql

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

安装第三方模块
python 复制代码
pip install mysqlclient

ORM可以做的事:

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

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

1、自己创建数据库

1)启动MySQL服务

2)自带工具创建数据库

2、django连接数据库

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

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

  • 删除表

  • 修改表

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

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

相当于在MySQL中运行了

mysql 复制代码
create table app01_userinfo(
    id bigint auto_increment primary key,
    name varchar(32),
    password varchar(64),
    age int
);

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

python 复制代码
python manage.py makemigrations
python manage.py migrate

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

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

  1. 手动输入一个值

  2. 设置默认值

    python 复制代码
    size = models.IntegerField(default=2)
  3. 允许为空

    python 复制代码
    data = models.IntegerField(null=True, blank=True)

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

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

  • 在terminal执行命令

    python 复制代码
    python manage.py makemigrations
    python manage.py migrate

数据的增删改查

python 复制代码
from app01 import models

1、新建

python 复制代码
    # ###新建###
    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、删除

python 复制代码
# ###删除###
    models.UserInfo.objects.filter(id=3).delete()
    models.Department.objects.all().delete()

3、查看(获取数据)

python 复制代码
    ###获取数据###
    #获取的是列表,列表是一行一行的数据
    #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、更新

python 复制代码
	models.UserInfo.objects.all().update(password=999)
    models.UserInfo.objects.filter(id=2).update(age=999)
相关推荐
2501_9418059325 分钟前
在大阪智能零售场景中构建支付实时处理与高并发顾客行为分析平台的工程设计实践经验分享
数据库
李慕婉学姐33 分钟前
【开题答辩过程】以《基于JAVA的校园即时配送系统的设计与实现》为例,不知道这个选题怎么做的,不知道这个选题怎么开题答辩的可以进来看看
java·开发语言·数据库
吃茄子的猫35 分钟前
quecpython中&的具体含义和使用场景
开发语言·python
珠海西格电力40 分钟前
零碳园区有哪些政策支持?
大数据·数据库·人工智能·物联网·能源
じ☆冷颜〃1 小时前
黎曼几何驱动的算法与系统设计:理论、实践与跨领域应用
笔记·python·深度学习·网络协议·算法·机器学习
想进部的张同学1 小时前
hilinux-3599---设备学习---以及部署yolo
学习·yolo·海思
哈里谢顿1 小时前
记录一次sql优化记录
mysql
数据大魔方1 小时前
【期货量化实战】日内动量策略:顺势而为的短线交易法(Python源码)
开发语言·数据库·python·mysql·算法·github·程序员创富
APIshop1 小时前
Python 爬虫获取 item_get_web —— 淘宝商品 SKU、详情图、券后价全流程解析
前端·爬虫·python
风送雨1 小时前
FastMCP 2.0 服务端开发教学文档(下)
服务器·前端·网络·人工智能·python·ai