Django 的数据库操作

发布时间 2023-08-08 17:32:13作者: 哩子吖

Djangp 提供了一套抽象的 API ,能够对数据库进行 CRUD (create,retrieve,update,delete objects)

1、使用 shell 操作

  安装 ipython 交互环境

  pip install -i https://pypi.douban.com/simple ipython

  pyhton manage.py shell -i ipython

  查看所有项目:Projects.objects.all()

 

2、查看数据库日志记录

  %PROGRAMDATA%\M有SQL\MySQL Server x.x\my.ini

  修改配置后重启生效

  log-output=FILE

  general-log=1

  general_log_file="mysql_keyou.log"

 

3、c (create),有两种方式新建数据

  ~~:使用模型内构造方法,

    one_obj = Projects(name='tets', leader='qwe')

    one_obj.save()    # 调用save才会在数据库中执行sql

  ~~:使用create,

    Projects.objects.create(name="test", leader="werw")

 

4、r(retrieve),获取数据库数据

  ~~:获取一个数据表的所有记录:Projects.objects.all ()

    返回所有记录组成的模型对象集合(queryset 查询集,就相当于一个存放了所有项目对象的列表)

  ~~:获取指定记录

    get:只能返回一条记录,若返回多条记录或者记录不存在则报错,所有get 方法的参数一般为主键或者唯一键,Projects.objects.get( id=1 )

    filter:获取某一些记录,返回的是满足条件之后的queryset,Projects.objects.filter(id=1)

       使用特定的过滤方法:模型类属性名(字段名)+ __ + 过滤的规则,

         如查询包含某个字符串的所有记录返回:Projects.objects.filter( leader__contains = 'icon' )

    exclude:获取某一些记录,返回的是不满足条件之后的 queryset ,Projects.objects.exclude( id=1 )

  ~~:关联查询,规则:外键字段 + __子表的字段名+ __contains

    如查询项目下所有接口名称:Projects.objects.filter( interface__name == ' test ' )

  ~~:多条件查询,条件之间默认是与关系,Projects.objects.filter( interface__name == ' test ' , leader='34d')

     使用Q变量指定多个变量,条件之间是或关系,Projects.objects.filter(Q( interface__name == ' test ' )| Q( leader='34d'))

  ~~:查询集的操作

     a. 查询集相当于一个列表,支持列表中的大多数操作(通过数字正向索引获取值,正向切片,for)

     b. 查询集是对数据库操作的一种优化

     c. 查询集会缓存结果

     d. 惰性查询

     e. 查询集还支持链式操作

 

5、update,先获取需要修改的模型对象,然后修改数据,最后保存

  one_project = Projects.objects.get( id=1 )

  one_project.leader = 'sdsw'

  one_project. save()

 

6、delete,先获取需要删除的模型对象,然后删除数据,最后保存

  one_project = Projects.objects.get( id=1 )

  one_project.delete()

  one_project. save()

 

7、排序操作,默认从小到大排序

  Projects.objects.get( id=1 ).order_by('id')