【Django3学习】ORM-MySQL数据库

0.准备工作

ORM向用户提供方法,并向下在方法中用SQL语句去操作数据库。

在这里插入图片描述

安装第三方模块mysqlclient

pip install mysqlclient

如果速度太慢可以指定代理

pip install mysqlclient -i https://pypi.mirrors.ustc.edu.cn/simple

1.创建数据库

由于ORM不支持自动创建数据库,因此需要自己手动创建一个数据,在此不做赘述

2.Django连接数据库

在这里插入图片描述

DATABASES = {
    'default': {
    'ENGINE': 'django.db.backends.mysql',
    'NAME':'mysite', # 数据库名字
    'USER': 'root',
    'PASSWORD': '12345678',
    'HOST': '127.0.0.1',
    'PORT': '3306',
    }
}

如上修改settings.py中的DATABASES字段的内容

在这里插入图片描述

3.Django操作表

创建表

models.py

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

该代码类似于如下的SQL建表语句:

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

在pycharm的terminal中运行如下指令:

python manage.py makemigrations
python manage.py migrate

如下图所示,则创建表成功

在这里插入图片描述

在这里插入图片描述

由于建表操作是从已注册的APP中去依次寻找models.py去建表,因此会产生许多默认提供的数据表。

可以采取以下操作,指定APP建表。

python manage.py makemigrations
python manage.py migrate APP的名字

删除表

当从models.py 中将建表语句注释或删除后,再运行以下操作

python manage.py makemigrations
python manage.py migrate

即可删除表

已有表添加字段

models.py 中增加字段即可,但注意此时会提示两个选项

在这里插入图片描述

    1. 提供一个默认值

在这里插入图片描述

    1. 在代码中手动设置默认值

在这里插入图片描述

在这里插入图片描述

  • 附加方法:允许字段的值为空

在这里插入图片描述

插入数据

views.py中演示:

def orm(request):
    from app01.models import Department, UserInfo

    # 新建数据 insert into app01_department(title) values("销售部")
    Department.objects.create(title="销售部")
    Department.objects.create(title="IT部")
    Department.objects.create(title="运营部")

    UserInfo.objects.create(name="lisi", password="123", age=19)

    return HttpResponse("成功")

在这里插入图片描述

在这里插入图片描述

删除数据

views.py中演示:

# 删除数据
UserInfo.objects.filter(id=1).delete() # 删除id=1的数据
Department.objects.all().delete() # 全部删除

查询数据

views.py中演示:

# 获取数据
data_list = UserInfo.objects.all() # 查全,获取列表(QuerySet类型)返回
print(data_list)

在这里插入图片描述

不难发现这个data_list中存放的是一个个的UserInfo对象,这个对象中封装了对应的字段值。

取出数据:

for obj in data_list:
	print(obj.id, obj.name, obj.password, obj.age)

在这里插入图片描述

亦或者采取以下方法:

row_obj = UserInfo.objects.first() # 取第一条记录【对象】
print(row_obj.id, row_obj.name, row_obj.password, row_obj.age)

更新数据

# 更新数据
UserInfo.objects.all().update(password=999)
UserInfo.objects.filter(id=2).update(password=123)

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

省下洗发水钱买书

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值