上篇博客我们介绍了如何利用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);
其中查询和更新,创建数据都有几种写法,大家只要掌握其中的一种写法就可以了。
路漫漫其修远兮。