使用Django框架中ORM系统实现对数据库数据增删改查

yizhihongxing

使用Django框架的ORM系统可以方便地实现对数据库数据的增删改查操作。下面将详细介绍如何使用ORM系统进行操作:

配置数据库连接信息

首先,在项目的settings.py文件中,配置数据库连接信息,例如:

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'mydatabase',
        'USER': 'mydatabase_user',
        'PASSWORD': 'mydatabase_password',
        'HOST': 'localhost',
        'PORT': '3306',
    }
}

定义模型类

在Django中,ORM系统的操作是基于模型类的。模型类是Python中的一个类,用于描述数据库中的表结构,包括表的字段和约束等信息。例如,我们定义一个Book类,表示一本书的信息:

from django.db import models

class Book(models.Model):
    title = models.CharField(max_length=100)
    author = models.CharField(max_length=50)
    publish_date = models.DateField()
    pages = models.IntegerField()

上述代码定义了一个Book类,继承自models.Model基类,表示一个书籍。该类有4个属性,分别是titleauthorpublish_datepages,分别对应了数据库表中的4个字段。CharField表示字符串类型,max_length参数表示最大长度;DateField表示日期类型;IntegerField表示整数类型。

数据库迁移

在定义了模型类后,需要使用Django的数据库迁移工具进行数据表的创建,命令如下:

python manage.py makemigrations
python manage.py migrate

执行以上命令之后,Django会根据模型类的定义,自动在数据库中创建相应的数据表。

数据库的增删改查操作示例

数据的插入

使用ORM系统向数据表中插入新的数据,可以用以下代码:

from datetime import datetime
from myapp.models import Book

# 创建一个Book对象
new_book = Book(title='Python从入门到精通', author='Lucas', publish_date=datetime.now(), pages=388)
# 保存这个对象到数据库中
new_book.save()

在上面的代码中,Book类的构造函数传入了4个参数:titleauthorpublish_datepages,代表了一本新书的信息。通过new_book.save()方法,将这个新的数据保存到数据库中。

数据的修改

使用ORM系统对数据进行修改时,需先通过筛选器将需要修改的记录查询出来,然后对其进行修改后保存到数据库中。这里我们修改书籍的页数,代码如下:

# 查询所有的Python书籍
py_books = Book.objects.filter(title__contains='Python')
# 修改所有Python书籍的页数
py_books.update(pages=500)

在上面的代码中,Book.objects.filter()方法用于筛选出所有书名包含"Python"的书籍,返回一个QuerySet对象。调用该对象的update()方法,将所有Python书籍的页数修改为500,并将修改结果保存到数据库中。

数据的查询和删除

使用ORM系统查询数据和删除数据,都可以通过筛选器进行控制。例如,我们查询所有Python书籍,并按出版日期排序,代码如下:

# 查询所有的Python书籍,并按出版日期降序排列
py_books = Book.objects.filter(title__contains='Python').order_by('-publish_date')

而要删除某个书籍,则需要首先通过筛选器将其查询出来,然后调用其delete()方法进行删除:

# 查询书名为"Python从入门到精通"的书
book_to_delete = Book.objects.get(title='Python从入门到精通')
# 删除该书
book_to_delete.delete()

以上就是使用Django框架中ORM系统实现对数据库数据增删改查的完整攻略,通过上述过程,我们可以轻松完成数据的常规操作。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:使用Django框架中ORM系统实现对数据库数据增删改查 - Python技术站

(0)
上一篇 2023年5月16日
下一篇 2023年5月16日

相关文章

  • django解决订单并发问题【推荐】

    以下是对django解决订单并发问题的完整攻略: 核心原理 Django解决并发问题的核心原理是通过数据库的事务机制来保证数据的一致性。当一个用户对某个数据进行操作时,Django会在数据库层面对数据进行锁定,使得其他用户不能同时对该数据进行操作。在用户完成操作后,Django会释放该锁。这样就可以避免多个用户同时对同一个数据进行操作,导致数据不一致的问题。…

    Django 2023年5月16日
    00
  • Django:runserver实现远程访问

    Django自带的runserver实现远程访问 最近在Ubuntu服务器上创建了一个Django项目,想实现远程访问:新创建一个名为my_site的Django项目,目录结构如下: 项目结构 ../my_site/ ├── db.sqlite3 ├── manage.py └── my_site ├── __init__.py ├── __pycache_…

    Django 2023年4月13日
    00
  • Python – Django – ORM 自定义 char 类型字段

    用 CharField 定义的字段在数据库中存放为 verchar 类型 自定义 char 类型字段需要下面的代码: class FixedCharField(models.Field): “”” 自定义的 char 类型的字段类 “”” def __init__(self, max_length, *args, **kwargs): self.max_le…

    Django 2023年4月10日
    00
  • django中只使用ModleForm的表单验证,而不使用ModleForm来渲染

    主题 众所周知,django.forms极其强大,不少的框架也借鉴了这个模式,如Scrapy。在表单验证时,django.forms是一绝,也是面向对象的经典表现。但要用它来渲染表单那就不好玩了,除非写框架。本文章主要缕一缕如何使用django.forms来做表单验证。 django项目基本信息 models.py from django.db import…

    Django 2023年4月10日
    00
  • python3.8+django2+celery5.2.7环境准备(python测试开发django)

    下面是关于“python3.8+django2+celery5.2.7环境准备”的完整攻略。 一、环境准备 下载Python3.8 在Python官网上下载Python3.8的安装包并安装,或者通过apt、yum等包管理工具进行安装。 安装并配置virtualenv virtualenv是一个可以创建虚拟Python环境的工具,并且可以在不同的项目中使用不同…

    Django 2023年5月16日
    00
  • 使用uwsgi启动django项目

    workon mycrm 751 pip3 list 752 pwd 753 pip3 freeze > requirements.txt 754 ls 755 cat requirements.txt 756 deactivate 757 mkvirtualenv nginx_crm 758 pip3 list 759 clear 760 ls 76…

    Django 2023年4月12日
    00
  • django配置(一)STATIC_ROOT

    说在前面:     最近学习的视频课程也逐渐到尾声了,来记录一些django中需要注意的配置修改 MEDIA_ROOT:     在说STATIC_ROOT之前,必须得提一下MEDIA_ROOT,在配置中,当你需要在你的项目中按照你心中的目录来存储文件时,MEDIA_ROOT是必不可少的。 # 文件存储配置 MEDIA_URL = ‘/media/’ MED…

    Django 2023年4月11日
    00
  • Python – Django – 删除作者

    修改 author_list.html,添加删除按钮 <!DOCTYPE html> <html lang=”en”> <head> <meta charset=”UTF-8″> <title>作者列表</title> </head> <body> <h1&…

    Django 2023年4月10日
    00
合作推广
合作推广
分享本页
返回顶部