当前位置: 首页 > news >正文

【实战案例】Django框架连接并操作数据库MySQL相关API

本文相关操作基于上次操作基本请求及响应基础之上【实战案例】Django框架基础之上编写第一个Django应用之基本请求和响应
Django框架中默认会连接SQLite数据库,好处是方便无需远程连接,打包项目挪到其他环境安装一下依赖一会就跑起来,但是缺点也很明显,实际应用中对于数据应用分离的项目不是非常友好。接下来会连接MySQL数据库,首先需要在对应的虚拟环境中安装mysqlclient驱动,使用如下命令:

pip install mysqlclient

在这里插入图片描述
在需要连接的数据库主机上实现安装好mysql数据库同时创建数据库,我这里用的跟项目名相同,叫django_first。

接下来修改项目文件夹下的settings.py文件,找到原来的sqlite配置文件注销或删除并添加如下配置(数据库用户名和密码填写成你自己的):

DATABASES = {"default": {"ENGINE": "django.db.backends.mysql",'NAME': 'django_first','HOST': '127.0.0.1','PORT': 3306,'USER': '******','PASSWORD': '******' ,"OPTIONS": {"read_default_file": "my.cnf",},}
}

在这里插入图片描述
可以用navicat或者右侧Pycharm自带的数据库管理插件测试连接是否成功,不再赘述。

由于配置了mysql所以需要替换默认的数据库引擎,在项目文件夹下__init__.py

import pymysqlpymysql.install_as_MySQLdb()

在这里插入图片描述
若虚拟环境中还没有安装pymysql可先安装一下,使用如下命令:

pip install pymysql

在这里插入图片描述
接下来可以迁移数据库了,但是Django创建表的过程中依赖应用,这里基于之前的投票程序polls。
在这个投票应用中,需要创建两个模型:问题Question和选项Choice。Question类包括问题描述和发布时间。Choice类有两个字段,选项描述和当前得票数。每个选项属于一个问题。
这些概念可以通过一个Python类来描述。按照下面的例子来编辑polls/models.py文件:

from django.db import modelsclass Question(models.Model):question_text = models.CharField(max_length=200)pub_date = models.DateTimeField("date published")class Choice(models.Model):question = models.ForeignKey(Question, on_delete=models.CASCADE)choice_text = models.CharField(max_length=200)votes = models.IntegerField(default=0)

为了在工程中包含这个应用,需要在配置类INSTALLED_APPS中添加设置。因为PollsConfig类写在文件polls/apps.py中,所以它的点式路径是 ‘polls.apps.PollsConfig’。在文件mysite/settings.py中INSTALLED_APPS子项添加点式路径后如下:

INSTALLED_APPS = ["polls.apps.PollsConfig",'django.contrib.admin','django.contrib.auth','django.contrib.contenttypes','django.contrib.sessions','django.contrib.messages','django.contrib.staticfiles',
]

接下来运行 makemigrations 命令,Django 会检测你对模型文件的修改(在这种情况下,你已经取得了新的),并且把修改的部分储存为一次迁移,命令如下:

py manage.py makemigrations polls

在这里插入图片描述
迁移是 Django 对于模型定义(也就是数据库结构)的变化的储存形式 - 它们其实也只是一些磁盘上的文件。可以阅读一下模型的迁移数据,储存在 polls/migrations/0001_initial.py 里。

如果想要查看执行的sql语句可使用命令
py manage.py sqlmigrate polls 0001

Django 有一个自动执行数据库迁移并同步管理数据库结构的命令migrate,如下命令进行迁移:

py manage.py migrate

等待迁移完成即可刷新数据库看到相应的表。
在这里插入图片描述
注意:迁移之前先将服务运行起来允许外部IP访问服务

py manage.py runserver

上述过程完成数据迁移。
Django自带一个web后台,下面创建web后台的超级管理员用户名和密码:

py manage.py createsuperuser

在这里插入图片描述
创建完成后可访问http://127.0.0.1:8000/admin/
在这里插入图片描述
在这里插入图片描述
可见可编辑的内容有组和用户,由django.contrib.auth提供,是Django开发的认证框架。
如果想要上述的投票应用在索引页面里显示,只需要再做一件事:告诉管理,问题Question对象需要一个后台接口,打开polls/admin.py文件,加入如下代码:

from django.contrib import adminfrom .models import Questionadmin.site.register(Question)

这时候可以看到管理后台已经注册了问题Question类,Django知道它应该被显示在索引页里,且可以进行添加实例,修改也可查询修改历史:
在这里插入图片描述
相应地,数据库中也会更新相应的记录:
在这里插入图片描述
以上为Django中对数据库MySQL基本API操作。

http://www.lryc.cn/news/466455.html

相关文章:

  • 【其他】无法启动phptudy服务,提示错误2:系统找不到指定的文件
  • AI驱动的支持截图或线框图快速生成网页应用的开源项目
  • es集群索引是黄色
  • 获取淘宝商品评论的方法分享-调用API接口item_review
  • MATLAB人脸考勤系统
  • Spring篇(事务篇 - 基础介绍)
  • qt EventFilter用途详解
  • [ 钓鱼实战系列-基础篇-6 ] 一篇文章让你了解邮件服务器机制(SMTP/POP/IMAP)-1
  • wordpress伪静态规则
  • 缓存框架JetCache源码解析-缓存定时刷新
  • docker配置mysql8报错 ERROR 2002 (HY000)
  • 【Linux】为什么环境变量具有全局性?共享?写时拷贝优化?
  • 如何在Linux中找到MySQL的安装目录
  • 机器人备件用在哪些领域
  • 基于单片机优先级的信号状态机设计
  • 数字电路week3
  • 如何在 Linux 中对 USB 驱动器进行分区
  • 【STM32+HAL】STM32CubeMX学习目录
  • PPT自动化:Python如何修改PPT文字和样式!
  • 4:Java的介绍与基础4:for语句
  • R语言机器学习算法实战系列(十二)线性判别分析分类算法 (Linear Discriminant Analysis)
  • [LeetCode] 50. Pow(x, n)
  • Vue学习笔记(七、事件修饰符 .stop .capture .self .once .prevent)
  • web网站搭建(静态)
  • 高效特征选择策略:提升Python机器学习模型性能的方法
  • 2024年TI杯E题-三子棋游戏装置方案分享-jdk123团队-第四弹 第一题
  • 优化多表联表查询的常见方法归纳
  • Java毕业设计 基于SpringBoot发卡平台
  • VRoid Studio 介绍 3D 模型编辑器
  • 软件设计模式------抽象工厂模式