小言_互联网的博客

Django操作mysql数据库增删改查

428人阅读  评论(0)

一、Django是什么

  1. Python下有许多不同的 Web 框架。Django是重量级选手中最有代表性的一位。许多成功的网站和APP都基于Django。
  2. Django是一个开放源代码的Web应用框架,由Python写成。
  3. Django遵守BSD版权,初次发布于2005年7月, 并于2008年9月发布了第一个正式版本1.0 。
  4. Django采用了MVC的软件设计模式,即模型M,视图V和控制器C。

二、Django 特点

强大的数据库功能
拥有强大的数据库操作接口(QuerySet API),如需要也能执行原生SQL。

自带强大后台
几行简单的代码就让你的网站拥有一个强大的后台,轻松管理内容!

优雅的网址
用正则匹配网址,传递到对应函数,随意定义,如你所想

模板系统
强大,易扩展的模板系统,设计简易,代码,样式分开设计,更容易管理。

**注:**前后端分离时,也可以用Django开发API,完全不用模板系统。

缓存系统
与Memcached, Redis等缓存系统联用,更出色的表现,更快的加载速度

国际化
完全支持多语言应用,允许你定义翻译的字符,轻松翻译成不同国家的语言。

三、Django 模型

  • Django 对各种数据库提供了很好的支持,包括:PostgreSQL、MySQL、SQLite、Oracle。
  • Django 为这些数据库提供了统一的调用API。 我们可以根据自己业务需求选择不同的数据库。
  • MySQL 是 Web 应用中最常用的数据库

Django的抽象模型Models可以直接对数据库进行增删改查,不需要你自己写SQL语言来进行相关数据库操作,这里Django通过Models提供了一套完整的ORM框架来帮助我们执行对数据库数据的操作,因此,使用Django很容易完成对数据库的增删改查操作。

下面我们正式开始关于Django 的使用

1、Django 项目创建

使用pycharm创建一个Django 项目很简单,打开pycharm,File -> new Project ,通过下面的窗口创建即可,等待依赖的相关模块加载完毕即可,

当然,也可以通过命令行的方式,即django-admin进行创建,命令如下

django-admin startproject HelloWorld

创建完毕后,项目结构如图所示,

新创建的项目,有一个文件夹,和项目名称一样,我们从这个文件夹说起,大概说一下里面的几个文件的作用,

  • manage.py: 一个实用的命令行工具,可让你以各种方式与该 Django 项目进行交互,比如启动Django项目时要执行的命令:python manage.py runserver
  • init.py: 一个空文件,告诉 Python 该目录是一个 Python 包。
  • settings.py: 该 Django 项目的设置/配置,比如配置数据库连接信息等
  • urls.py: 该 Django 项目的 URL 声明; 一份由 Django 驱动的网站"目录",可以集中管理项目中的各个模块的路由信息
  • wsgi.py: 一个 WSGI 兼容的 Web 服务器的入口,以便运行你的项目。

2、运行项目
其实上面的项目创建完毕后,就可以直接进行启动了,Django自带了服务器,但在生产环境下不适用这个自带的服务器,启动命令如下

python manage.py runserver

启动完毕,直接访问控制台的url:http://127.0.0.1:8000,不出意外可以看到欢迎页,

3、基本路由配置
Django中有一个很重要的模块就是路由,通过路由的统一管理和分发,控制客户端访问的路径,从而响应给客户端不同的信息,个人理解的主要有两种,返回数据,定向到不同的视图

直接返回数据,有点儿类似接口的行为,即客户端请求一个指定的接口,后台返回数据
返回数据并定向到视图,即后台返回数据并将定向到指定的html或其他模板页面,然后进行数据渲染

下面分别说说这两种方式,为使用方便,我们通过Django的命令行创建不同的模块,方便后续使用,这个有点儿类似于分包,比如实际业务中我们一个项目中有3个后台模块,就可以通过命令创建3个模块,然后再在各个不同的模块下编写自己模块的业务逻辑代码即可,

分别创建App模块,Student模块,Teachers模块

django-admin startapp App
django-admin startapp Student
django-admin startapp Teachers

创建完毕后,项目结构如图,可以看到,每个模块下均包含了一系列的配置文件,

我们先在App中进行,找到全局的路由配置入口,即在HelloDiango中,有一个urls.py的文件,这个配置文件管理着全局的路由配置,

简其主要的配置都在urlpatterns这个列表中,比如我们想访问某个接口路径怎们办呢?只需要在urls.py中引入某个模块的views即可,当然你的接口并不一定必须写在views里,也可以自定义一个.py文件,编写你对应模块的逻辑,这里假设先使用App模块里的views.py这个默认的文件,

首先在urls.py里导入views这个文件

from App import views

然后再在urlpatterns中使用path()函数定义浏览器访问的路径,比如我想通过访问:http://127.0.0.1:8000/hello得到数据,那么配置就是这样

path('hello/',views.hello)

而views.hello这个hello就是你需要在views.py中定义的方法,接下来就去看一下这个文件中代码的编写

from django.http import HttpResponse
from django.shortcuts import render

# Create your views here.

#返回接口数据
def hello(request):
    return HttpResponse("双击666")

如果是返回数据,只需通过HttpResponse包装你的数据即可,然后启动项目,访问一下,可以看到,接口数据成功返回

如果是视图的话,同样先在urlpatterns中添加一个path的路径配置,

path('miaIndex/',views.index),

然后去views.py中定义函数

#跳转视图页面
def index(request):
    return render(request,'index.html')

要注意的是,这个index.html需要放在templates文件夹下,我们在这个文件夹下创建一个index.html页面,

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>MiaTest</title>
</head>
<body>
<h1>hi ,mia,the first python web application</h1>

<button id="first" onclick="displayData()">点我吧</button>

</body>

</html>

然后启动项目,进行访问,看到如下页面说明配置成功,

当然,我们也可以在接口中将数据和页面一起返回,然后在页面上渲染出来,这个留着后面详述

通过上面的基本的基本演示,我们完成了Django项目的简单搭建和路由的基本使用配置,并不难,主要是需要熟悉各个配置文件的使用

四、Django 操作数据库增删改查

有了上面的基础后,我们来说说使用Django 对mysql进行数据的增删改查操作,即上文提到的Model模型

在我们创建了一个Django 项目时,默认有一个db.sqllite3的文件,属于数据库的一种,但我们更多的使用的是mysql,因此在开始之前,需要安装一下mysql的连接驱动,直接在pycharm的终端下执行命令即可

pip install mysqlclient

安装完毕后,首先需要在settings.py中的DATABASES连接处进行本地数据库连接信息的配置,

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',  # 或者使用 mysql.connector.django
        'NAME': '数据库名称',
        'USER': 'root',
        'PASSWORD': '密码',
        'HOST':'数据库IP地址',
        'PORT':'3306',
    }
}

为演示方便我提前创建了一个测试使用的数据库,

1、定义模型
在上文中,我们创建了不同的模块,比如App,Student,Teachers,对于于实际的业务来讲,就是不同的功能板块,这样做的目的很简单,方便项目的运维管理,Django规定,如果要使用模型,必须要创建一个app,即模块的名称,我们使用以下命令创建一个 App的 app,上文已经说到了,

django-admin startapp App

创建成功后的模块包括响应的配置文件,我们要操作数据库的相关代码就写到各自的模块中即可,假如我们要操作数据库的一张表,Django中要怎么做呢?首先需要在models.py中定义基本的属性啊,即类和数据库字段的映射啊

from django.db import models

# Create your models here.

class Student(models.Model):
    s_name = models.CharField(max_length=16)
    s_age = models.IntegerField(default=1)

比如说我们在Student中要操作一个Student相关的行为,这里有s_name 和s_age 两个字段,直接在类中声明即可,具体的意思大家可以参考相关资料

2、注册配置
以上的类名代表了数据库表名,且继承了models.Model,类里面的字段代表数据表中的字段(name),数据类型则由CharField(相当于varchar)、DateField(相当于datetime), max_length 参数限定长度。

接下来在settings.py中找到INSTALLED_APPS这一项,如下:

3、生成表结构
执行下面的几行命令

python manage.py migrate   # 创建表结构
python manage.py makemigrations Student# 让 Django 知道我们在我们的模型有一些变更
python manage.py migrate Student# 创建表结构

执行完毕上述的几行命令后,再去刷新数据库,可以看到数据库已经生成了我们需要的表结构,至于其他的表,属于Django自带的,可以不用做过多理会

4、重新配置路由
实际使用中,为方便路由的模块化管理和统一管理,老司机建议我们最好在各个模块中定义自己的urls.py文件,然后再加入到全局的urls.py中,这个在不同的语言和框架中都有这个思想,既然如此,我们先在Student中添加一个urls.py的路由文件,操作本模块的所有url的配置都将写到这个文件中,

这里配置完了后,怎么被Django项目全局管理起来呢?只需要将它注册到全局的urls.py中即可,如下,

后续如果还有更多的模块要加进来,只需要按照上述的操作即可

5、编写Django操作mysql的增删改查

上面的准备工作都做完了,就可以使用Django的model堆数据库做基本的增删改查操作了,我们现在Student模块下创建一个student_db.py文件,代码在这个文件中编写,该模块做的urls.py配置代码如下,其实和全局的那个配置基本类似,只是放在了自己的模块下进行管理起来

from django.contrib import admin
from django.urls import path, include
from App.testdb  import *
from App import views
from Student import *

urlpatterns = [

    #path('admin/', admin.site.urls),
    path('hello/',views.hello),
    path('miaIndex/',views.index),

    #基本增删改查操作
    path('test_save/',test_save),
    path('test_query/',test_query),
    path('test_update/',test_update),
    path('test_delete/',test_delete),

    #student模块的操作
    path('student/',include('Student.urls')),

]

1、数据添加

#数据添加
def test_save(request):
    test1 = Student(s_name='邓肯',s_age=40)
    test1.save()
    return HttpResponse('数据添加成功')

运行项目后,再访问之前需要注意我们全局的配置是这样的,path(‘student/’,include(‘Student.urls’)),而在自己的模块下是这样的,url(‘test_save/’,test_save),因此浏览器的路径访问时要注意拼接完整,

http://127.0.0.1:8000/student/test_save/

然后看数据库是否添加成功?id在上面的Student类中没有加,Django会默认按照自增策略加进去

表中成功添加一条数据,

其他的修改,查询和删除就不再一一演示了,下面直接贴出代码,提供参考,

#获取数据
def test_query(request):
    # 初始化
    #查询所有的数据
    list = Student.objects.all()
    #查询单个数据
    response2 = Student.objects.filter(id=1)
    return HttpResponse(response2.get().s_name)

#修改数据
def test_update(request):
    Student.objects.filter(id=1).update(s_name = '帕克')
    return HttpResponse("修改成功")

#删除数据
def test_delete(request):
    Student.objects.filter(id=1).delete()
    return HttpResponse("删除成功")

简单总结一下,本文通过pycharm创建Django项目,并简单演示了Django下的路由基本配置,创建不同模块的命令,最后演示了一下使用Django的Model对mysql进行增删改查操作,由于是学习使用,内容并不深,希望对后面的学习提供参考和帮助,最后感谢观看!


转载:https://blog.csdn.net/zhangcongyi420/article/details/102313888
查看评论
* 以上用户言论只代表其个人观点,不代表本网站的观点或立场