2019独角兽企业重金招聘Python工程师标准>>>

Django 紧紧地遵循这种 MVC 模式,可以称得上是一种 MVC 框架。以下是 Django 中 M、V 和 C 各自的含义:

  • M ,数据存取部分,由django数据库层处理,本章要讲述的内容。

  • V ,选择显示哪些数据要及怎样显示的部分,由视图和模板处理。

  • C ,根据用户输入委派视图的部分,由 Django 框架通过按照 URLconf 设置,对给定 URL 调用合适的 python 函数来自行处理。

由于 C 由框架自行处理,而 Django 里更关注的是模型(Model)、模板(Template)和视图(Views),Django 也被称为 MTV 框架 。在 MTV 开发模式中:

  • M 代表模型(Model),即数据存取层。该层处理与数据相关的所有事务:如何存取、如何确认有效性、包含哪些行为以及数据之间的关系等。

  • T 代表模板(Template),即表现层。该层处理与表现相关的决定:如何在页面或其他类型文档中进行显示。

  • V 代表视图(View),即业务逻辑层。该层包含存取模型及调取恰当模板的相关逻辑。你可以把它看作模型与模板之间的桥梁。

models.py就是Django里面的建表所需的数据模型的描述:

命令:
python manage.py init 初始化数据库

python manage.py sqlall [appname] 查看app的CREATE TABLE的语句,包括原始数据,创建索引等.

python manage.py sqlreset [appname] 修改models,不保留以前数据,进行重置数据库,更新表。

python manage.py validate 用来排错

python manage.py syncdb 用来建表

python manage.py sql databasename 用来查看已创建数据库表结构

数据库建表过程:
1.创建应用程序
python manage.py startapp appname

2.用python代码写models.py,创建数据模型

from django.db import modelsclass Publisher(models.Model):name = models.CharField(maxlength=30)address = models.CharField(maxlength=50)city = models.CharField(maxlength=60)state_province = models.CharField(maxlength=30)country = models.CharField(maxlength=50)website = models.URLField()

3.模型的安装
编辑settings.py
添加:
INSTALLED_APPS=(
        'mysite.appname',
}

4.创建数据库表:
python manage.py validate    (验证模型有效性)

python manage.py sqlall appname (生成CREATE TABLE语句)

python manage.py syncdb (执行上一步产生的SQL语句,简表。不执行上一句也可以建,也可以把上一句执行产生的SQL语句放入SQL客户端去执行,syncdb 仅仅创建数据库中不存在的表,而不会同步模型的修改或者删除到数据库)

5.插入和更新数据
插入数据:
定义对象
p = Publisher(.....)         //将新的内容放到Publisher里面赋给对象p
p.save()       //完成插入

上面相当于SQL语言:

INSERT INTO book_publisher(name, address, city, state_province, country, website)
VALUES('Apress', '2855 Telegraph Ave.', 'Berkeley', 'CA','U.S.A.', 'http://www.apress.com/');

更新数据:
p.name = 'NewName'        //修改对象p的名字
p.save()         //完成存储

上面相当于SQL语言:

UPDATE book_publisher SETname = 'NewName',address = '2855 Telegraph Ave.',city = 'Berkeley',state_province = 'CA',country = 'U.S.A.',website = 'http://www.apress.com'
WHERE id = 52;

选择对象:
Publisher.objects.all()
相当于SQL:

SELECTid, name, address, city, state_province, country, website
FROM book_publisher;

数据过滤

Publisher.objects.filter(name="NewName")
相当于SQL语句:
SELECTid, name, address, city, state_province, country, website
FROM book_publisher
WHERE name = 'NewName';缩小范围:Publisher.objects.filter(country="U.S.A.", state_province="CA")
相当于SQL语句:SELECTid, name, address, city, state_province, country, website
FROM book_publisher
WHERE country = 'U.S.A.' AND state_province = 'CA';模糊匹配:
Publisher.objects.filter(name__contains="press")

在 name 和 contains 之间有双下划线。象Python自己一样,Django也使用 双下划线来做一些小魔法,这个 __contains 部分会被Django转换成 LIKE SQL语句:

SELECT id, name, address, city, state_province, country, website FROM book_publisher WHERE name LIKE '%press%';

获取单个对象:

Publisher.objects.get(name="Apress Publishing")数据排序:   Publisher.objects.order_by("name")
相当于SQL语句:
SELECTid, name, address, city, state_province, country, website
FROM book_publisher
ORDER BY name;可以支持多个字段排序:Publisher.objects.order_by("state_provice", "address")也可以逆向排序:
Publisher.objects.order_by("-name") 添加‘-’同时排序和过滤:  Publisher.objects.filter(country="U.S.A.").order_by("-name")
相当于SQL语句:
SELECTid, name, address, city, state_province, country, website
FROM book_publisher
WHERE country = 'U.S.A'
ORDER BY name DESC; 限制返回数据:  Publisher.objects.all()[Number]    //Number可以换成想要显示的位置下标
相当于SQL语句:
SELECTid, name, address, city, state_province, country, website
FROM book_publisher
ORDER BY name
LIMIT 1; 删除对象:p = Publisher.objects.get(name="NewName")
p.delete()

修改数据库表结构:
添加字段:

首先,在开发环境中执行下面的步骤(也就是说,不是在发布服务器上):

  1. 把这个字段添加到你的模型中.

  1. 运行 manage.py sqlall [yourapp] 会看到模型的新的 CREATE TABLE 语句。 注意新的字段的列定义。

  1. 启动您的数据库交互shell(也就是 psql 或 mysql , 或者您也可以使用 manage.py dbshell )。 执行一个 ALTER TABLE 语句,添加您的新列。SQL语句:(ALTER TABLE books_publisher ADD COLUMN test integer)

  2. (可选)用 manage.py shell 启动Python交互式shell,并通过引入模型并选择表 验证新的字段已被正确添加。

删除字段:

ALTER TABLE books_book DROP COLUMN test;删除表:DROP TABLE books_book

转载于:https://my.oschina.net/yixiusztx/blog/70365

【转】Django 数据库的操作相关推荐

  1. Django从理论到实战(part31)--Django数据库查询操作

    学习笔记,仅供参考 参考自:Django打造大型企业官网–Huang Y: Django数据库查询操作 查找是数据库操作中一个非常重要的技术,查询一般就是使用filter.exclude以及get三个 ...

  2. Django数据库orm操作以list形式获取数据库中某列所有值

    文章目录 问题: 解决办法: 方式一: 方式二: 方式三: 写在最后 问题: 如图所示,Django数据库中存储如下字段. 这是在前端渲染出的数据.现在的需求是:要把factory这一列数据从后端数据 ...

  3. python爬虫 django搜索修改更新数据_一文搞懂Django数据库查询操作

    本文略长,读完约需十分钟.当做复习笔记效果更佳. 查询操作: 数据查询是数据库操作中一个非常重要的技术.查询一般就是使用filter.exclude以及get三个方法来实现.我们可以在调用这些方法的时 ...

  4. Django 数据库相关操作 (六)

    前言 上篇已经介绍过模型相关操作,并创建好了数据库及相关表字段,接下来将通过以下表在Django中进行表数据的增删改查. from django.db import modelsclass Stude ...

  5. Django 数据库ORM 操作 - 字段的类型和参数

    通过Django的ORM创建表的时候,我们需要定义自己的类. 定义类的时候,他有各种各样的字段类型,每个字段都有自己的参数可以进行配置,下面简单的归纳一下. 首先看看字段的类型.尽管Python提供了 ...

  6. python Django数据库保存操作

  7. Django开发基础----操作数据库

    Django中对数据库的操作是由Models来完成的 Models是什么? 通常,一个Model对应数据库的一张数据表 Django中Models以类的形式出现 它包含了一些基本字段以及数据的一些行为 ...

  8. django系列5.1--ORM对数据库的操作

    Django---ORM数据库操作(图书管理系统基本实例) 一.基本知识 MVC模式(Model–view–controller)是软件工程中的一种软件架构模式,把软件系统分为三个基本部分:模型(Mo ...

  9. 在python中创建虚拟环境和Django对数据库的操作(一)

    一怼:横州侧畔千帆过,漏出你这个小瘪三,我劝天公重抖擞,劈死你这个王八蛋(by.阅后即瞎) 先说笔者所使用的版本,笔者使用的是django1.8.4的版本,不同版本可能有不同请按照实际情况处理,本文只 ...

最新文章

  1. Softmax的理解与应用
  2. 2011年吉林大学计算机研究生机试真题
  3. Offline creation url pattern
  4. SpringBoot整合Mybatis-plus实现增删查改
  5. .Net 安装aliyun-oss
  6. [转载] python 去除字符串中指定字符
  7. 存储过程别忘了写最后一句话,别忘了类型转换
  8. 【初探IONIC】不会Native可不可以开发APP?
  9. GJB 8114-2013中不恰当的编码规则解析
  10. 营销邮件这样写 客户打开率会更高
  11. 04 | 穿越功耗墙,我们该从哪些方面提升“性能”?
  12. 职称计算机考试光盘就一套模拟题,职称计算机考试光盘复习题档.doc
  13. Postman接口自动化测试之— 请求参数进行MD5/SHA256摘要计算
  14. Injective Protocol官方文档翻译(四) -通证经济(Token Economics)
  15. 《数据结构(C语言版)》严巍敏课件~第一章:绪论
  16. 被迫停运|黑客组织攻击俄罗斯天然气公司石油网站
  17. lbe+android6.0+免root,LBE安全大师(免ROOT)
  18. MATLAB的应用 Applications of MATLAB in engineering
  19. 19号笔刷是哪个_19号笔刷(ps19号笔刷在哪)
  20. 3D卷积神经网络详解

热门文章

  1. word如何一键全选_【众点学】学了这些Word技巧才知道,原来这么多年的班都白加了...
  2. python外星人入侵游戏run_game报错_《python编程从入门到实践》书中的外星人入侵小游戏报错...
  3. 开红字信息表的时候服务器为空,对方开了红字信息表但系统没有显示怎么办
  4. Spark案例:Python版统计单词个数
  5. 【cogs2711】jump,二分答案+倍增套ST表
  6. 二叉树C++ | 广度优先遍历(层级顺序遍历)_2
  7. 计算机信息安全基础薄弱具体,信息安全工程师易错题精讲十三
  8. 【英语学习】【WOTD】grift 释义/词源/示例
  9. discuz设置用户每天回帖数_如何用Redis统计独立用户访问量,除了Hash跟Bitset,还有这个...
  10. 从helloworld回顾程序的编译过程之二