• Django学习笔记七----操作models,对数据库进行操作


    上篇博客我们介绍了如何利用Django中的models创建数据库,

    今天我们讲一下如何对创建的数据库进行‘增删改查’的操作。

    我们是在django的shell模式下完成的,利用的ORM,(关系映射对象),不是数据库的sql语句,虽然底层肯定是sql 语句封装而成的。

    下面直接讲讲步骤吧。

    第一:进入Django的shell模式。

    命令:python manage.py shell

    第二:导入数据库表。格式是从:应用 中导入的。

    例如:我的应用名称是:polls,表名:Question,Choice

    from polls.models import Question,Choice

    其中:Question 的字段如下:

    字段就两个:question_id,pub_date

    id这个字段是建表成功后,sqlite3自动分配的字段。

    那么,对Question的操作如下:

    增:(创建)

    Question.objects.create(question_text='你的学习怎么样?‘,pub_date=timezone.now());   

    Question.objects.create(question_text='今天中午吃什么?‘,pub_date=timezone.now());   

    Question.objects.create(question_text='what is new?‘,pub_date=timezone.now());   

    其中:timezone是在django shell 中导入的模块(

    from django.utils import timezone

    )以上三个orm语句就可以新增3条数据进去了。

    查找:

    Question.objects.filter(question_text='what is new?');

    就可以查询出我们想要的那条数据了。

    类似的还有:

    Question.objects.filter(id=1);

    Question.objects.filter(question_text__startswith='what') ;(类似于sql语句中的like用法,以what开头的那条数据,startswith前面是两条下划线,不是一条)

    Question.objects.filter(question_text__endwith='什么’);以(什么)结尾的那条数据。

    修改:

    就是在查询的基础上直接修改,非常方便。

    Question.objects.filter(id=1).update(question_text='你作业写完了嘛?')  --------------吧id=1的那条数据中的question_text改成:你作业写完了嘛?

    删除:

    Question.objects.filter(id=1).delete()

    把id=1的那条数据删除。

    关联的表的数据如何创建数据呢?

    例如:我的Choice表是关联Question表的。

     其实也简单,具体我们看下Choice这个表,就知道如何操作了。

     看到了,自动把question_id带进来了。这个question_id就是对应的是Question表中的id,

    那么,我们对Choice表进行增加数据的时候,就要注意,我们要添加的数据是对应Question表中的哪个id 的数据就可以了。

    例如:我想回答id=2的Question表中的问题,

    那么,我在Choice表中,就要指定question_id=2;

    例子:Choice.objects.create(choice_text='红烧肉‘,votes=1,question_id=2);

    Choice.objects.create(choice_text='麻辣烫‘,votes=1,question_id=2);

    其中查询和更新,创建数据都有几种写法,大家只要掌握其中的一种写法就可以了。

    路漫漫其修远兮。

  • 相关阅读:
    微信浏览器取消缓存的方法
    iphone safari浏览器CSS兼容性的解决方案集合
    配置iis支持.json格式的文件
    win7下使用IIS服务器及自定义服务器端包含模块(SSI)步骤
    前端组件库集合
    ClientValidationFunction
    java 查询solr时间格式
    为何大量网站不能抓取?爬虫突破封禁的6种常见方法
    反爬虫四个基本策略
    ScheduledExecutorService 定时器用法
  • 原文地址:https://www.cnblogs.com/star12111/p/15126262.html
Copyright © 2020-2023  润新知