Django4-mysql

4.1.ORM -Django的 模块
作用:不用去手动使用数据库的语句如(select * from xxxx),作为一个翻译的工程
在这里插入图片描述4.2.安装mysqlcliet模块
可以通过命令行的方式安装:pip install mysqlclient
如果命令行的方式安装不成功,可以寻找wheel文件,再安装
在这里插入图片描述在这里插入图片描述
4.3 ORM可以完成:
创建、修改、删除数据库的表(不用写SQL语句)【无法创建数据库】

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

(1)自行创建数据库

 1.1启动mySQL服务 
 可参考  (https://blog.csdn.net/weixin_43696992/article/details/124182360)
 1.2.创建数据库
 create database test DEFAULT CHARSET utf8 COLLATE utf8_general_ci;

在这里插入图片描述

(2) Django 连接数据库 在setting.py中进行修改

DATABASES = {
‘default’: {
‘ENGINE’: ‘django.db.backends.mysql’,
‘NAME’: ‘test’, # 数据库名字
‘USER’: ‘root’,
‘PASSWORD’: ‘root’,
‘HOST’: ‘127.0.0.1’, # 哪台机器安装了MySQL
‘PORT’: 3306,
}
}
在这里插入图片描述

(3)通过django 操作表

	- 创建表
	- 删除表
	- 修改表

在model.py中创建表

如下图,类中的变量就相当于是下面对应的sql语句
在这里插入图片描述
其中app01是因为注册的就是表面是app01_xxxxx;

再执行
python manage.py makemigrations
python manage.py migrate

就完成了数据库表的创建。
在这里插入图片描述(数据库可视化软件Navicat 的激活方法 https://www.bilibili.com/video/BV12W4y1z792?spm_id_from=333.337.search-card.all.click ,破解工具在阿里云云盘)
在这里插入图片描述其它的表是Django自动给我们创建的
在这里插入图片描述
注意:要完成创建表,对应的app一定要是已经注册****了的。
在这里插入图片描述要添加表就在 models.py中添加类,再执行migrate的两个语句就行
在这里插入图片描述删除表->删除对应的类
删除表内的键->删除类中的变量 (每次修改后都需要执行migrate的语句)
在这里插入图片描述在已有的表中添加新的列,由于表中原有字段数据的新列的值不好赋值,所以需要注意方法:
![在这里插入图片描述](https://img-blog.csdnimg.cn/1fe113b360164bc0aa0435a1c6ec4062.png
在这里插入图片描述
在这里插入图片描述选择1或者2

  1. 将已有数据的新列的值全部赋值为1
    2)先退出,自行在变量后添加default=默认值,来赋值已有数据的列的值

这里选择2:
然后设置已有数据列的值
在这里插入图片描述以后在开发中如果想要对表结构进行调整:

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

  • 命令

  • python3.9 manage.py makemigrations
    python3.9 manage.py migrate

(4)通过ORM 操作表中的数据
新建数据:
直接通过 类名.objects.create(列名=“xxxxx”)
在这里插入图片描述测试:通过在views.py中引用models.py的方式来进行新建数据,
新建数据的时候如果列设置了默认值,可以不为列进行自行设置数据

在这里插入图片描述

在这里插入图片描述**删除数据:**加粗样式在这里插入图片描述
filter表示将特定的条件数据删除。

在这里插入图片描述获取数据
在这里插入图片描述
在这里插入图片描述可以通过循环获取到列表的每行数据:
在这里插入图片描述
还可以通过filter拿到特定id的数据,然后通过first()得到第一条数据,这样就能获得一个特定id的对象,就可以直接调用:
在这里插入图片描述

更新数据
更新数据同样可以将全部对象列更新,也可以通过filter指定对象的列进行更新
在这里插入图片描述

在这里插入图片描述
错误解决

错误代码1:django.db.utils.ProgrammingError: (1146, “Table ‘test1.app02_userinfo’ doesn’t exist”)

在这里插入图片描述问题是表不存在,其实就是数据库迁移出了问题,需要重新迁移一下。
即需要对应修改 migrations 文件夹 内容
1:删除migrations 文件夹所有除了_init_.py的文件
在这里插入图片描述2:再去数据库里面,把报错对应的记录也删除
即找到数据库表django_migrations,并 删除该app名字的所有记录
在这里插入图片描述
即对应的app02的记录,最后再使用
python3.9 manage.py makemigrations
python3.9 manage.py migrate
命令

问题:在原有的models.py中添加新的字段,出现No migrations to apply.的情况 如下图
在这里插入图片描述在Task中添加新字段NO的时候,注意运行makemigrations时,会提示由于在原定的表中添加新字段,原有的数据的这个字段就必须要有一个值,如果在models.py的这个新字段中未设置default=xx时,就会有这个提示,

如果选择2,并且没有在对应新字段上设置default=xx,直接运行migrate就会出现No migrations to apply.的情况

在这里插入图片描述所以解决方法有两种:
1:输入1,为其提供一个默认值
2:输入2,先退出,在models.py对应的新字段中添加default=xx,然后再重新makemigrations与migrate。

注意:删除的时候由于不需要默认值,就可以直接完成删除了。
在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值