Django 数据库的操作

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 models

class 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 SET
name = '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:
SELECT
id, name, address, city, state_province, country, website
FROM book_publisher; 数据过滤
Publisher.objects.filter(name="NewName")
相当于SQL语句:
SELECT
id, name, address, city, state_province, country, website
FROM book_publisher
WHERE name = 'NewName';

缩小范围:
Publisher.objects.filter(country="U.S.A.", state_province="CA")
相当于SQL语句:

SELECT
id, 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")

namecontains 之间有双下划线。象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语句:
SELECT
id, 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语句:
SELECT
id, 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语句:
SELECT
id, 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(也就是 psqlmysql , 或者您也可以使用 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
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Django中进行数据库操作需要进行以下几个步骤: 1. 在settings.py文件中配置数据库连接信息。可以使用sqlite3或者MySQL等不同的数据库引擎。例如,如果要连接MySQL数据库,需要将DATABASES中的ENGINE设置为'django.db.backends.mysql',并指定HOST、PORT、NAME、USER和PASSWORD等相关参数。 2. 在views.py文件中编写对数据库操作代码。可以使用Django的ORM(对象关系映射)来进行数据库操作。例如,可以使用models.UserInfo.objects.create()创建一个新的数据库对象,并指定相应的属性值。 3. 在视图函数中处理用户的请求,根据请求的方法(GET或POST)执行相应的数据库操作。例如,可以在POST请求中通过request.POST获取用户提交的表单数据,并使用models.UserInfo.objects.create()将数据写入数据库。 4. 在模板中展示数据库中的数据。可以通过查询数据库获取相应的数据,并将其传递给模板进行展示。例如,可以使用models.UserInfo.objects.all()获取所有的数据库对象,并将其传递给模板进行渲染。 需要注意的是,在进行数据库操作之前,需要确保数据库已经创建并正确配置了相关的权限和表结构。可以在settings.py文件中的DATABASES配置中指定数据库名称、用户名和密码等信息。 总结起来,进行Django数据库操作的主要步骤包括配置数据库连接信息、编写数据库操作代码、处理用户请求以及在模板中展示数据。123 #### 引用[.reference_title] - *1* [Django数据库操作](https://blog.csdn.net/m0_65883616/article/details/125736469)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}} ] [.reference_item] - *2* *3* [django基础之数据库操作](https://blog.csdn.net/inexaustible/article/details/107981925)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值