Django操作数据库

  金牌会员 | 2024-10-27 03:00:55 | 显示全部楼层 | 阅读模式
打印 上一主题 下一主题

主题 805|帖子 805|积分 2415

1、ORM框架



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

   ORM可以资助我们做两件事:
创建、修改、删除数据库中的表(不用写SQL语句),但是无法创建数据库
操作表中的数据(不用写SQL语句),Django会利用ORM将代码翻译成SQL语句来操作数据库
  

  • 使用ORM之前还需安装第三方模块
  1. pip install mysqlclient
复制代码

2、ORM-创建数据库

   由于ORM无法创建数据库,因此需要我们利用mysql来创建。
  

  • 启动mysql并输入密码登录
  1. mysql -u root -p
复制代码


  • 创建数据库
  1. create database djangodb DEFAULT CHARSET utf8 COLLATE utf8_general_ci;
复制代码


  • 查询数据库看是否创建乐成
  1. show databases;
复制代码
3、ORM-连接数据库



  • 在settings.py文件中举行配置和修改



  • 删去db.sqlite3,并修改连接数据库的代码
  1. DATABASES = {
  2.     'default': {
  3.         'ENGINE': 'django.db.backends.mysql',  # 引擎
  4.         'NAME': 'djangodb',  # 数据库名字
  5.         'USER': 'root',   # 用户名
  6.         'PASSWORD': 'root',    # 密码
  7.         'HOST': '127.0.0.1',  # 安装MySQL的机器,一般是本机
  8.         'PORT': 3306,
  9.     }
  10. }
复制代码
4、ORM-操作表

4.1、类创建表



  • 在models.py中创建一个类,类中写入若干字段名



  • 编写类之后,ORM会根据类自动执行下述SQL语句来天生表(下述的SQL语句不需要自己写)
  1. create table app01_userinfo(
  2.     id bigint auto_increment primary key,
  3.     name varchar(50),
  4.     password varchar(60),
  5.     age int
  6. )
复制代码
  

  • 表名:app名称_类名小写
  • 类中的字段对应表中的列
  • 自动天生id列,且是自增、主键
  

  • 此时我们查询数据库可以看到并未创建该表



  • 上述操作只是天生表,假如想让django在数据库中创建该表,还需要执行下述命令
  1. python manage.py makemigrations
  2. python manage.py migrate
复制代码
  执行命令之前需要注意以下几点:
  

  • 确保app提前被注册
  • 当前的目录为根目录,必须包含manage.py,这样它才会发挥作用
  • 使用的python解释器必须安装了mysqlclient
  

  • 查询数据库的表时可以看到已经创建乐成

   天生很多其他的表是因为Django在执行上述命令时会去找每个app的models中的类来天生表,而Django默认提供了很多其他的app,这些app也依赖于一些表,因此会天生内部默认的一些表,假如不需要解释掉即可。

  4.2、修改表结构

4.2.1、删除表结构

当想要删除表或表中的列时,只需要将models.py中的对应代码删掉或解释掉,重新执行下述命令即可
  1. python manage.py makemigrations
  2. python manage.py migrate
复制代码
4.2.2、新增表结构

   在表中新增列时,由于已存在列中大概已有数据,以是新增列必须要指定新增列对应的数据
  

  • 在表中新增size列



  • 重新执行上述命令时会出现下述选择(这里选择第一种选择)



  • 第二种选择是在代码中添加默认值



  • 第三种选择是允许数据为空

5、ORM-增编削查

5.1、新增数据

  1. 类名.objects.create(字段名=值,...)
复制代码


5.2、删除数据



  • 根据筛选条件删除数据
  1. 类名.objects.filter(筛选条件).delete()
复制代码


  • 删除所有数据
  1. 类名.objects.all().delete()
复制代码
5.3、查询数据



  • 获取符合条件的所有数据
  1. data_list = 类名.objects.all()
复制代码


  • 根据筛选条件获取数据
  1. data_list = 类名.objects.filter(筛选条件)
复制代码


  • 获取第一条数据
  1. obj = 类名.objects.filter(筛选条件).first()
复制代码
  all()和filter()获取的数据范例均为QuerySet范例,可以看作数据列表范例,即[对象,对象,对象],而first()获得的是对象范例
  5.4、更新数据



  • 更新所有数据
  1. 类名.objects.all().update(更新的字段名=新数据)
复制代码


  • 根据筛选条件更新数据
  1. 类名.objects.filter(筛选条件).update(更新的字段名=新数据)
复制代码
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表