Django学习之旅(六)

0?wx_fmt=gif

0?wx_fmt=png

 

本文是 Django 学习之旅的完结篇,主要是讲述 model 层。model 层是与数据库打交道的,其中包括 怎么连接数据库、怎么对数据库进行增删改查等。主要逻辑代码是写在 models.py 中。

 

 

 

 

 

 

 

1  

 

新建数据库

 

Django 支持的数据库有 PostgreSQL 、MySQL、SQLite等,基本上市面上的有的数据库都支持。我是使用 PyCharm 作为开发工具。PyCharm 在新建项目的时候,会自动生成一个 SQLite 数据库。如果你使用 MySQL 数据库,你需要自行创建数据库。我新建一个名为 Django_demo 的项目,在根目录有个名为 db 的 SQLite 数据库。

0?wx_fmt=png

 

 

 

 

 

2  

 

连接数据库

 

首先打开 PyCharm 软件,点击 PyCharm 的右侧名为 Database 的选项。这时会弹出操作数据库的可视化界面。点击当前选项卡的左上角的“ + ”号 =》Data source =》选择跟你新建数据库时相同的数据库。我新建数据库是选择 Sqlite ,所以选择 Sqlite 连接。

0?wx_fmt=png新建连接会弹出一个对话框。我们需要先安装连接数据库驱动包,再填写数据库访问的地址、数据库帐号密码,最后点击"Test conntection"按钮。如果提示"successful",则证明连接数据库成功。

0?wx_fmt=png

 

 

 

 

 

 

3  

 

创建字段

在 models.py 文件中,我们新建一个实体类,代码如下:

0?wx_fmt=png

上述代码非常直观。每个模型都用一个类表示,该类继承自 django.db.models.Model。每个模型都有一些类变量,在模型中每个类变量都代表了数据库中的一个字段。

每个字段通过 Field 类的一个实例表示 —— 例如字符字段 CharField 和日期字段 DateTimeField 。这种方法告诉 Django,每个字段中保存着什么类型的数据。更多字段以及含义可以阅读 Django 官方文档。

 

 

 

 

 

4  

 

创建表

打开终端,切换目录到 manage.py 所在目录。执行一下两行命令来创建数据库的表。

0?wx_fmt=png

运行成功的结果如下:

0?wx_fmt=png

在数据库也会发现我们刚才新建的表

0?wx_fmt=png

 

 

 

 

 

 

5  

 

插入与查询数据 

Author 和 Book 表已经新建成功了。你可能有这样的疑惑。我要怎么往该表插入数据呢?听我慢慢道来。
在 Django 中,一个模型类对应一个数据库的表。因此,一个模型类的实例就表示表中的一条数据。为了输出的数据一目了然,我们需要对上面的 model 进行优化。

0?wx_fmt=png当我们在 model.py 对这两个模型类修改完成之后,我们需要通知数据库:“我模型已经修改了,你数据库也要更新呀”。
只需要执行上步的两行命令即可

0?wx_fmt=pngDjango 会对 models.py 进行检测,自动发现需要更改的,应用到数据库中去。

 

1)创建对象
打开 python 终端,利用命令行来创建一个对象。

0?wx_fmt=png看到 <Author: Author object> 意味着成功创建对象,即成功向数据库插入一条数据。

 

2)查询数据
同样在 python 终端下,执行下面的命令。

0?wx_fmt=png

 

3)使用 QuerySet API 查询数据
从数据库中查询出来的结果一般是一个集合,这个集合叫做 QuerySet。而一旦我们建立好数据模型,Django 会自动为我们生成一套数据库抽象的API。这样就大大方便我们创建、检索、更新和删除对象。
假如现在有个需求,我们需要查询数据库中所有的作者并打印出作者的姓名。我们可以利用 QuerySet 支持迭代的特性来进行操作。

0?wx_fmt=pngQuerySet 还有更加复杂的用法, 利用过滤条件来筛选出数据。

0?wx_fmt=png

 

4)使用 QuerySet 创建数据
我们之前创建对象都是通过命令行。但是在生产环境中,显然不能这么操作。那么我们要如何在 py 文件中创建对象呢? QuerySet 创建对象一共有四种办法

方法 A

0?wx_fmt=png方法B

0?wx_fmt=png方法C

0?wx_fmt=png方法D

0?wx_fmt=png

 

5)使用 QuerySet 更新数据
A、单个 object 更新, 适合于 .get(), get_or_create(), update_or_create() 等得到的 obj,和新建很类似。

0?wx_fmt=pngB、批量更新, 适用于 .all() .filter() .exclude() 等后面

0?wx_fmt=png

 

6)使用 QuerySet 删除数据
删除的用法跟创建用法是大同小异,在获取结果后面添加 delete() 方法即可。

0?wx_fmt=png

 

Django 学习之旅不知不觉到了终点了。终点又是另一个新的起点。我们虽然对 Django 已经有大概的认识,仅仅了解些皮毛,但是还需要深入学习,掌握其精髓。后续我会学习然后分享 Django 一些精髓用法。

 

作者:猴哥,公众号:极客猴。爱好读书,喜欢钻研技术,梦想成为文艺青年的IT Boy。

 - END -

 

 

 

 

0?wx_fmt=jpeg

 

 

 

极客猴

 

 

 

分享干货的公众号

 

 

 

0?wx_fmt=jpeg

0?wx_fmt=jpeg

 

 

 

长按指纹 > 识别图中二维码 > 添加关注

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值