返回顶部
首页 > 资讯 > 后端开发 > Python >Django中ORM表的创建和增删改查方法示例
  • 330
分享到

Django中ORM表的创建和增删改查方法示例

示例方法Django 2022-06-04 19:06:10 330人浏览 泡泡鱼

Python 官方文档:入门教程 => 点击学习

摘要

前言 Django作为重量级的python WEB框架,在做项目时肯定少不了与数据库打交道,编程人员对数据库的语法简单的还行,但过多的数据库语句不是编程人员的重点对象。因此用ORM来操作数据库相当快捷。今天

前言

Django作为重量级的python WEB框架,在做项目时肯定少不了与数据库打交道,编程人员对数据库的语法简单的还行,但过多的数据库语句不是编程人员的重点对象。因此用ORM来操作数据库相当快捷。今天来介绍一下用ORM操作数据库。

一、创建Django项目

可以使用PyCharme专业版直接快速创建。如果不是专业版也可以使用命令进行创建。下面列出命令行创建方式:


djanGo-admin startproject orm_test

这时会在当前目录创建文件夹名为orm_test,接下来进入orm_test文件夹中,执行命令:


Python manage.py runserver

就启动了该项目,默认浏览器访问127.0.0.1:8000就可以看到项目运行成功的提示。

接下来我们用命令在项目中创建一个应用:


django-admin startapp cmdb

此时基本准备就做好了。

二、修改配置文件

把我们的应用即cmdb添加到 setting.py 的 INSTALLED_APPS 中:


INSTALLED_APPS = [
 'django.contrib.admin',
 'django.contrib.auth',
 'django.contrib.contenttypes',
 'django.contrib.sessions',
 'django.contrib.messages',
 'django.contrib.staticfiles',
 'cmdb', #我们创建的应用
]

另外我们基本用的是Mysql数据库,但django中默认为sqlite3。仍然在setting.py中找到 DATABASES ,对内容进行修改:


DATABASES = {
 'default': {
 'ENGINE': 'django.db.backends.mysql',
 'NAME': 'orm_test', #数据库名称
 'USER':'root', #用户
 'PASSWord':'123456', #密码
 'HOST':'localhost', #IP地址,本地测试为localhost
 'PORT':'3306', #端口号
 }
}

里面的“NAME”的值是你数据库中已有的数据库名称,接下里在此数据库中创建数据表。

python3 中,连接数据库的是pymysql,因此在项目同名文件夹下的__init__.py 中加入以下代码才能正常运行。


 import pymysql
 pymysql.install_as_MySQLdb()

三、写模板文件来创建表结构

在应用(cmdb)的 models.py 中开始写表结构,我们要做的就是写一个类,类中的属性为表中的列,ORM将类转换为sql语句。简单的写一个下面的类,包含用户名和密码两列。


from django.db import models

# Create your models here.

class users(models.Model):
 username=models.CharField(max_length=32)
 password=models.CharField(max_length=64)

四、生成数据表

在终端中输入命令行 python manage.py makemigrations ,这时会在应用(cmdb)下的migrations文件夹下出现一个_initial.py 的文件,它记录着生成数据表结构的一些数据的临时文件,接着在命令行中输入 python manage.py migrate,由刚才的临时文件生成数据表。我们在数据库中查看生成的数据表,可以看到django生成的不仅仅是刚创建的一个表,而是十多个表,除自己的一张表,剩余为django内部使用(包含有缓存,cookie,session等,毕竟这么厉害的框架为你做到你想不到的是应该的)。在终端中查看一下表结构:show create table cmdb_users;

查看图片

看到的不仅有两个自定的属性列,多出一个id列,并且是自增的还是主键。

五、路由映射关系

在同名项目文件夹下的urls.py 中导入应用(cmdb),写映射关系到cmdb的views.py


from django.conf.urls import url
from django.contrib import admin
from cmdb import views
urlpatterns = [
 url(r'^admin/', admin.site.urls),
 url(r'^login/', views.login),
]

六、视图及数据表的增删改查

在路由映射到应用(cmdb)下的views.py 中,右映射中写对应的函数,也就是login函数。用于显示的观察项目的运行,我们在此函数中就先简单得的打印到屏幕上一句“Hello World”。

在login函数中写入增删改查的语句。


from django.shortcuts import render
from django.shortcuts import HttpResponse
# Create your views here.

from cmdb import models
def login(request):
 #增加
 # models.users.objects.create(username='xsmile',password=12345)
 # models.users.objects.create(username='sofia',password=12345)
 # models.users.objects.create(username='jerry',password=12345)
 #查看
 # result=models.users.objects.all() #查看所有

 # 条件查询,结果为querySet类型,所以循环取出结果
 # result=models.users.objects.filter(username='sofia')
 # for row in result:
 # print(row.id,row.username,row.password)

 #更改
 # models.users.objects.filter(id=2).update(username='eric')
 
 #删除
 #models.users.objects.filter(username='sofia').delete()

 return HttpResponse('Hello World')

启动项目后,浏览器访问127.0.0.1:8000/login 就可看到屏幕上的Hello World,表示相关的数据操作已成功修改数据表。
相关操作后数据表内容的变化如下:


#插入一条数据后
mysql> select * from cmdb_users;
+----+----------+----------+
| id | username | password |
+----+----------+----------+
| 1 | xsmile | 12345 |
+----+----------+----------+
1 row in set (0.00 sec)

#再插入三条数据后
mysql> select * from cmdb_users;
+----+----------+----------+
| id | username | password |
+----+----------+----------+
| 1 | xsmile | 12345 |
| 2 | xsmile | 12345 |
| 3 | sofia | 12345 |
| 4 | jerry | 12345 |
+----+----------+----------+
4 rows in set (0.00 sec)

#修改数据后
mysql> select * from cmdb_users;
+----+----------+----------+
| id | username | password |
+----+----------+----------+
| 1 | xsmile | 12345 |
| 2 | eric | 12345 |
| 3 | sofia | 12345 |
| 4 | jerry | 12345 |
+----+----------+----------+
4 rows in set (0.00 sec)

#删除数据后
mysql> select * from cmdb_users;
+----+----------+----------+
| id | username | password |
+----+----------+----------+
| 1 | xsmile | 12345 |
| 2 | eric | 12345 |
| 4 | jerry | 12345 |
+----+----------+----------+
3 rows in set (0.00 sec)

七、django orm 常用查询筛选

先列举一下django orm中的常用查询的筛选方法:

大于、大于等于 小于、小于等于 in like is null / is not null 不等于/不包含于

model:


class User(AbstractBaseUser, PermissionsMixin):
 uuid = ShortUUIDField(unique=True)
 username = models.CharField(max_length=100, db_index=True, unique=True, default='')
 schoolid = models.CharField(max_length=100, null=True, blank=True, default='')
 classid = models.CharField(max_length=100, null=True, blank=True, default='')
 fullname = models.CharField(max_length=50, default='', null=True, blank=True)
 email = models.EmailField(_('email address'), blank=True, null=True)
 age = models.SmallIntegerField(default=0)

大于、大于等于


__gt 大于
__gte 大于等于

User.objects.filter(age__gt=10) // 查询年龄大于10岁的用户
User.objects.filter(age__gte=10) // 查询年龄大于等于10岁的用户

小于、小于等于


__lt 小于
__lte 小于等于

User.objects.filter(age__lt=10)  // 查询年龄小于10岁的用户
User.objects.filter(age__lte=10) // 查询年龄小于等于10岁的用户

in


__in

查询年龄在某一范围的用户
User.objects.filter(age__in=[10, 20, 30])

like


__exact    精确等于 like 'aaa'
__iexact    精确等于 忽略大小写 ilike 'aaa'
__contains   包含 like '%aaa%'
__icontains  包含 忽略大小写 ilike '%aaa%',但是对于sqlite来说,contains的作用效果等同于icontains。

is null / is not null


__isnull 判空

User.objects.filter(username__isnull=True)  // 查询用户名为空的用户
User.objects.filter(username__isnull=False) // 查询用户名不为空的用户

不等于/不包含于


User.objects.filter().excute(age=10)  // 查询年龄不为10的用户
User.objects.filter().excute(age__in=[10, 20]) // 查询年龄不为在 [10, 20] 的用户

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对编程网的支持。

--结束END--

本文标题: Django中ORM表的创建和增删改查方法示例

本文链接: https://lsjlt.com/news/16104.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • Django中ORM表的创建和增删改查方法示例
    前言 Django作为重量级的Python web框架,在做项目时肯定少不了与数据库打交道,编程人员对数据库的语法简单的还行,但过多的数据库语句不是编程人员的重点对象。因此用ORM来操作数据库相当快捷。今天...
    99+
    2022-06-04
    示例 方法 Django
  • 三、1:orm的增删改字段、创建表
    1 orm介绍 1 tools--->Run manage.py Task   python3 manage.py makemigrations 只需要敲命令:makemigrations(记录数据库的修改记录) python3 ma...
    99+
    2023-01-31
    字段 orm
  • MySQL中增删改查语法的示例分析
    这篇文章给大家分享的是有关MySQL中增删改查语法的示例分析的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。普通的单表更新或删除sql大家肯定滚瓜烂熟,但你有用过连表更新或删除的s...
    99+
    2024-04-02
  • Hibernate中Session增删改查的示例分析
    这篇文章将为大家详细讲解有关Hibernate中Session增删改查的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。把三状态转换图放在这,方便分析方法的作用:Session的save()方法Se...
    99+
    2023-05-30
    hibernate session
  • django数据库增删改查的方法是什么
    Django是一个开发Web应用程序的框架,它提供了一种简单而强大的方式来进行数据库的增删改查操作。以下是Django中常用的数据库...
    99+
    2023-10-11
    django 数据库
  • MySQL表的增删改查方法是什么
    这篇文章主要讲解了“MySQL表的增删改查方法是什么”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“MySQL表的增删改查方法是什么”吧!一. CRUDCRUD : Create,Retrie...
    99+
    2023-07-05
  • Python+Django+MySQL实现基于Web版的增删改查的示例代码
     前言 本篇使用Python Web框架Django连接和操作MySQL数据库学生信息管理系统(SMS),主要包含对学生信息增删改查功能,旨在快速入门Python Web,少走弯路。效果演示在项目实战最后一...
    99+
    2022-05-31
    Django MySQL 增删改查 Django 增删改查
  • JavaScript创建、更改和删除Cookie的方法
    本篇内容介绍了“JavaScript创建、更改和删除Cookie的方法”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够...
    99+
    2024-04-02
  • C语言中单链表的基本操作(创建、销毁、增删查改等)
    目录链表分类单链表的介绍单链表的基本操作创建打印尾插头插尾删头删查找任意位置插入任意位置删除销毁完整代码总结链表分类 链表主要有下面三种分类方法: 单向或者双向带头或者不带头循环或者...
    99+
    2023-02-05
    C语言单链表 单链表的创建 单链表的销毁 单链表的增删查改
  • Java实现单链表增删改查的操作方法
    这篇文章主要介绍了Java实现单链表增删改查的操作方法,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。一、新建学生节点类Stu_Node节点包含:学号:int num;姓名:S...
    99+
    2023-06-14
  • C#中XML文件内容增删改查的方法
    本篇内容介绍了“C#中XML文件内容增删改查的方法”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!什么是XMLXML是一种可扩展标记语言(EX...
    99+
    2023-06-29
  • 创建、修改、删除mysql表、视图、索引的方法
    下面讲讲关于创建、修改、删除mysql表、视图、索引的方法,文字的奥妙在于贴近主题相关。所以,闲话就不谈了,我们直接看下文吧,相信看完创建、修改、删除mysql表、视图、索引的方法这篇文章你一定会有所受益。...
    99+
    2024-04-02
  • python cx_Oracle的基础使用方法(连接和增删改查)
    问题 使用python操作oracle数据库,获取表的某几个字段作为变量值使用。 使用Popen+sqlplus的方法需要对格式进行控制,通过流获取这几个字段值不简洁(个人观点……)。(优点是能够使用sq...
    99+
    2022-06-04
    使用方法 基础 python
  • C++双向链表的增删查改操作方法源码分析
    这篇“C++双向链表的增删查改操作方法源码分析”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“C++双向链表的增删查改操作方法...
    99+
    2023-07-05
  • Java 创建动态类和查看方法列表信息的实例
     Java 创建动态类和查看方法列表信息的实例Sample code :import java.lang.reflect.Constructor; import java.lang.reflect.InvocationHandle...
    99+
    2023-05-31
    java 动态类 ava
  • Java中Mybatis框架增删查改与核心配置的示例分析
    小编给大家分享一下Java中Mybatis框架增删查改与核心配置的示例分析,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!原始JDBC操作原始jdbc操作(查询数据)原始jdbc操作(插入数据)原始jdbc操作的分析原始jd...
    99+
    2023-06-25
  • python使用openpyxl库读写Excel表格的方法(增删改查操作)
    一、前言 嗨,大家好,我是新发。 最近需要做个小工具,可以通过python来读写Excel,实现增删改查操作。以前用的是xlrd和xlwt这两个python库,今天我要讲的是openpyxl库,我觉得openpyxl...
    99+
    2022-06-02
    python读写Excel表格 python openpyxl库读写Excel表格
  • oracle中dblink查看、创建、使用及删除的方法
    本篇内容介绍了“oracle中dblink查看、创建、使用及删除的方法”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!一.查看dblink--...
    99+
    2023-06-30
  • 在MongoDB中创建和删除数据库的方法
    小编给大家分享一下在MongoDB中创建和删除数据库的方法,希望大家阅读完这篇文章后大所收获,下面让我们一起去探讨吧!1、在MongoDB中创建数据库列出数据库:首先检查系统中的当前数据库。首先我们应该知道...
    99+
    2024-04-02
  • 在MySQL中创建和删除数据库的方法
    在MySQL中创建和删除数据库的方法?这个问题可能是我们日常学习或工作经常见到的。希望通过这个问题能让你收获颇深。下面是小编给大家带来的参考内容,让我们一起来看看吧! MySQL是最受欢迎的Web...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作