对象关系映射(英语:Object Relational Mapping,简称ORM,或O/RM,或O/R mapping),是一种程序设计技术,用于实现面向对象编程语言里不同类型系统数据之间的转换。从效果上说,它其实是创建了一个可在编程语言里使用的“虚拟对象数据库”。如今已有很多免费和付费的ORM产品,而有些程序员更倾向于创建自己的ORM工具。

1、ORM-增加操作

新增操作

  1. from django.test import TestCase
  2. import django
  3. # Create your tests here.
  4. import os
  5. os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'thz_django.settings')
  6. django.setup()
  7. """
  8. 这段代码是设置环境变量用的,
  9. 使用Linux,我们可能经常去配置~/.bashrc
  10. 然后写上 export JAVA_HOME=/usr/local/java/jdk1.8.0_231
  11. 环境变量可以理解为一个大字典,如下
  12. {....,
  13. 'JAVA_HOME': '/usr/local/java/jdk1.8.0_231',
  14. 'DJANGO_SETTINGS_MODULE': 'XXXX.settings'
  15. }
  16. 如果环境变量中没有DJANGO_SETTINGS_MODULE,则设置为XXXX.settings
  17. 如果环境变量已经配置了 DJANGO_SETTINGS_MODULE,则不进行更新,函数返回原有值
  18. 而且 os.environ 配置的环境变量是临时的,运行结束后就会消失
  19. """
  20. from user import models
  21. # 方式1:新增一条表记录
  22. c = models.Category(name="linux")
  23. c.save()
  24. # 方式2:新增一条表记录
  25. models.Category.objects.create(name="python")

2、ORM-查询操作

查询记录

  1. # 查询方式1
  2. c = models.Category.objects.get(id=1) #查询结果是1条的可以用,多条不可以
  3. # select * from category where id = 1
  4. # 返回一个model对象 c
  5. print(c.name)
  6. print(c.id)
  7. print(c.create_time)
  8. print(c.update_time)
  9. # 查询方式2:
  10. result = models.Category.objects.filter(id=1)
  11. #result = models.Category.objects.filter(id__gt=0) #id大于0的所有数据
  12. print(result)
  13. print(result[0])
  14. print(result.first()) # 取第一条
  15. print(result.exists()) # 有没有返回数量
  16. print(result.count()) # 返回多少条记录
  17. print(models.Category.objects.all()) # 返回这个表里所有数据

3、ORM-修改操作

修改记录

  1. # 修改方式1:
  2. c = models.Category.objects.get(id=1)
  3. c.name="java"
  4. c.save()
  5. # 修改方式2:
  6. models.Category.objects.all().update(name="xxx") #全部修改
  7. models.Category.objects.filter().update(name="xxx")#条件修改

4、ORM-删除操作

删除记录

  1. # 删除方式1:
  2. c=models.Category.objects.get(id=3)
  3. c.delete()
  4. # 删除方式2:
  5. models.Category.objects.all().delete() #删除Category表里所有数据
  6. models.Category.objects.filter(id=1).delete() #条件删除Category表里所有数据