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

news2024/11/26 16:46:59

本文相关操作基于上次操作基本请求及响应基础之上【实战案例】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 pymysql

pymysql.install_as_MySQLdb()

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

pip install pymysql

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

from django.db import models


class 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 admin

from .models import Question

admin.site.register(Question)

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2220947.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

你知道吗?这个岗位只招2人,但HR那边却收到了1w份简历

引言 在当前经济环境下,求职者面临的挑战越来越大。互联网行业尤其如此,许多人挤破头都想进入大厂,但竞争异常激烈。如今的就业市场确实变得异常艰难。然而,随着AI大模型技术的兴起,对于那些掌握了相关技能的专业人才…

学习笔记——交换——STP(生成树)基本概念

三、基本概念 1、桥ID/网桥ID (Bridege ID,BID) 每一台运行STP的交换机都拥有一个唯一的桥ID(BID),BID(Bridge ID/桥ID)。在STP里我们使用不同的桥ID标识不同的交换机。 (2)BID(桥ID)组成 BID(桥ID)组成(8个字节):由16位(2字节)的桥优先级…

Java基于SSM微信小程序物流仓库管理系统设计与实现(lw+数据库+讲解等)

选题背景 随着社会的发展,社会的方方面面都在利用信息化时代的优势。互联网的优势和普及使得各种系统的开发成为必需。 本文以实际运用为开发背景,运用软件工程原理和开发方法,它主要是采用java语言技术和mysql数据库来完成对系统的设计。整个…

wordcloud分词生成

代码如下 _ from wordcloud import WordCloud import PIL.Image as image import numpy as np import jiebadef cut(text):word_list jieba.cut(text,cut_all True)# 分词后在单独个体之间加上空格result " ".join(word_list)return result#导入文本文件,进行分词…

免费ppt模板从哪找?全面又实用的PPT模板就在这找

就是说有多少刚上大学的朋友,为了交一份完美的PPT报告,手写列大纲、找报告文献/插图素材......最后手动整理排版,老老实实地熬了几个大夜? 24年都快结束啦,大家还没学会去免费的ppt模板网站下载精美的主题PPT一键替换吗…

政安晨【零基础玩转各类开源AI项目】基于本地Ubuntu (Linux ) 系统应用Gradio-Lite:无服务器 Gradio 完全在浏览器中运行

目录 简介 什么是@gradio/lite? 入门 1.导入 JS 和 CSS 2. 创建标签 3. 在标签内编写你的 Gradio 应用程序 更多示例:添加其他文件和要求 多个文件 其他要求 SharedWorker 模式 代码和演示playground 1.无服务器部署 2.低延迟 3. 隐私和安全 限制 尝试一下!…

VScode远程开发之remote 远程开发(二)

VScode远程开发之remote 远程开发(二) 使用vscode进行远程开发很简单,在拓展里搜索 Remote Development,就可以搜索到微软提供的远程开发大礼包,里面包含了 通过 SSH 远程服务器 远程容器 远程 WSL(Win…

亚马逊测评自养号技术及采购下单成功率揭秘

在亚马逊测评中,自养号面临砍单、买家号关联等问题时,需要采取一系列策略和技术手段来提高采购下单的成功率。以下是一些具体的解决方案: 一、解决砍单问题 1.确保硬件参数独立 每个账号应使用具有独特硬件标识的设备,如IMEI、…

【大模型实战篇】大模型分词算法WordPiece分词及代码示例

继《大模型数据词元化处理BPE(Byte-Pair Encoding tokenization)》之后,我们针对大模型原始数据的分词处理,继续分享WordPiece分词技术【1】。 1. 原理分析 WordPiece 是 Google 开发的分词算法,用于预训练 BERT。此后,它被多个基…

uni-app中添加自定义相机(微信小程序+app)

一、微信小程序中 微信小程序中可以直接使用camera标签&#xff0c;这个标签不兼容app&#xff0c;官方文档 <cameradevice-position"back"flash"off":style"{ height: lheight px, width: lwidth px }"class"w-full"></c…

vue3【实战】 渲染 md 文件(markdown语法 .md后缀的文件)

1. 安装相关插件 npm i unplugin-vue-markdown markdown-it-prism prism unhead/vue2. 添加配置 src/main.ts // 给 md 文件创建头部 import { createHead } from unhead/vue // md 文件中代码高亮的样式 import prismjs/themes/prism.css // 自定义 md 文件的样式 import /as…

【JAVA面试题】什么是Springboot的自动配置以及注意事项

文章目录 强烈推荐核心概念&#xff1a;自动配置的关键特点&#xff1a;示例&#xff1a; 需要注意的点1.默认配置可能不适合所有场景2.Bean 冲突与覆盖3.应用启动慢的问题4.过度依赖自动配置5.安全性问题6.依赖冲突与版本兼容7.过多不必要的自动配置8.调试困难 专栏集锦 强烈推…

.net framework 3.5sp1安装错误卡住不动怎么解决

解决 .NET Framework 3.5 SP1 安装错误卡住的问题&#xff0c;可以尝试以下几种方法&#xff1a; 1.使用 DISM 工具&#xff1a; 将下载的 NetFx3.cab 文件放置在 C:\Windows 文件夹下。 以管理员身份打开命令提示符&#xff0c;输入以下命令&#xff1a; dism /online /En…

【web前端设计】jquery图标动画特效

学习目标 学习web前端设计技术&#xff08;HTML、css、JavaScript、jQuery等&#xff09;&#xff0c;综合运用技术&#xff0c;将其与HTML元素结合&#xff0c;设计样式、监听事件、添加动画等&#xff0c;给用户呈现出更好的视觉交互效果。本文主要学习分页按钮自动放大、元…

HCIP-HarmonyOS Application Developer 习题(十二)

&#xff08;多选&#xff09;1、声明式开发范式的转场动画包含以下哪几种类型? A、页面间转场 B、应用间转场 C、共享元素转场 D、组件内转场 答案&#xff1a;ACD 分析&#xff1a; &#xff08;多选&#xff09;2、公共事件服务为应用程序提供哪些能力。 A、取消发布公共…

IPMA能力基础线是什么?项目管理工具有哪些应用场景?

作为资深团队管理者&#xff0c;常常面临如何提升团队项目管理能力的挑战。其实在现代的项目管理世界中&#xff0c;有许多标准和模型帮助我们更好地理解项目的复杂性&#xff0c;IPMA&#xff08;International Project Management Association&#xff09;能力基础线就是其中…

iOS静态库(.a)及资源文件的生成与使用详解(Swift版本)

引言 在 iOS 开发中&#xff0c;开发者常常需要将一些功能模块封装成可重用的库&#xff0c;以便在多个项目中共享使用。除了常见的Framework&#xff08;动态库/静态库&#xff09;&#xff0c;静态库&#xff08;.a文件&#xff09;也是一种非常实用的封装方式。静态库在编译…

Java全栈经典面试题剖析4】JavaSE高级 -- 包装类,String, 类方法

目录 面试题3.1 什么是自动装箱与拆箱&#xff1f;用什么方式来装箱与拆箱&#xff1f; 面试题3.2 int和Integer有什么区别&#xff1f; 面试题3.3 Integer常量池 面试题3.4 字符串常量池 面试题3.5 这句代码创建了几个对象? String str1 new String("xyz");…

前端拦截302重定向

背景: 根据业务场景需要拦截302做后续的逻辑处理 尝试一: : axios拦截 、、、、、async created() {// 获取302请求返回的location后手动修改video的src路径let targetSrc;try {await axios.get(this.video).then((res) > {const { headers, status } res;const { locat…

Android 图片相识度比较(pHash)

概述 在 Android 中&#xff0c;要比对两张 Bitmap 图片的相似度&#xff0c;常见的方法有基于像素差异、直方图比较、或者使用一些更高级的算法如 SSIM&#xff08;结构相似性&#xff09;和感知哈希&#xff08;pHash&#xff09;。 1. 基于像素的差异比较 可以逐像素比较…