搭建基于Django的博客系统数据库迁移从Sqlite3到MySQL(四)

上一篇:搭建基于Django的博客系统增加广告轮播图(三)
下一篇:基于Django的博客系统之用HayStack连接elasticsearch增加搜索功能(五)

Sqlite3数据库迁移到MySQL 数据库

迁移原因

Django 的内置数据库 SQLite3 和外置数据库 MySQL 有一些关键区别,这些区别会影响项目的开发、部署和维护。以下是两者之间的主要区别:

1. 安装与配置

  • SQLite3:
    • 安装: 内置于 Python 中,无需额外安装。
    • 配置: 配置简单,只需在 settings.py 中指定数据库文件路径。
    • 适用场景: 适合小型项目、开发环境和单用户应用。
  • MySQL:
    • 安装: 需要单独安装 MySQL 服务器,并且需要合适的 MySQL 驱动(例如 mysqlclientPyMySQL)。
    • 配置: 需要在 settings.py 中配置数据库主机、端口、用户名和密码。
    • 适用场景: 适合大型项目、生产环境和多用户应用。

2. 性能与扩展性

  • SQLite3:
    • 性能: 对于读操作性能较好,但在大量并发写操作下性能较差。
    • 扩展性: 设计为嵌入式数据库,不适合高并发、复杂查询和大数据集。
  • MySQL:
    • 性能: 适合高并发、多用户环境,支持复杂查询和大数据集。
    • 扩展性: 支持水平和垂直扩展,可以通过集群和分片来提升性能。

3. 数据完整性与事务

  • SQLite3:
    • 数据完整性: 支持基本的数据完整性约束。
    • 事务: 支持事务,但在高并发写操作下可能会出现锁争用问题。
  • MySQL:
    • 数据完整性: 提供更高级的数据完整性约束和外键支持。
    • 事务: 提供强大的事务支持,尤其是使用 InnoDB 存储引擎时。

4. 功能与特性

  • SQLite3:
    • 功能: 提供基础的 SQL 功能,不支持一些高级特性如存储过程、触发器等。
    • 特性: 单个数据库文件,便于移动和备份。
  • MySQL:
    • 功能: 提供全面的 SQL 功能,支持存储过程、触发器、视图等高级特性。
    • 特性: 支持多种存储引擎(如 InnoDB、MyISAM 等),可以根据需求选择。

5. 开发与维护

  • SQLite3:
    • 开发: 易于设置和使用,非常适合快速原型和开发。
    • 维护: 无需运行单独的数据库服务器,维护简单。
  • MySQL:
    • 开发: 需要设置和运行 MySQL 服务器,但提供更丰富的开发特性。
    • 维护: 需要定期维护数据库服务器和数据备份,维护工作量较大。

选择建议

  • SQLite3 适合:
    • 小型项目或单用户应用。
    • 开发和测试环境。
    • 移动应用和嵌入式系统。
  • MySQL 适合:
    • 大型项目和生产环境。
    • 高并发、多用户应用。
    • 需要复杂查询和事务支持的应用。

更换步骤

以下是将 Django 项目从 SQLite 数据库切换到 MySQL 数据库的具体步骤:

1. 安装 MySQL 和相关驱动

首先,你需要确保 MySQL 服务器已经安装并运行。然后,安装 Python MySQL 驱动,例如 mysqlclient

pip install mysqlclient

或者 PyMySQL

pip install PyMySQL

如果使用 PyMySQL,还需要在 Django 项目的 __init__.py 文件中添加以下代码,以确保 Django 使用 PyMySQL 作为 MySQL 驱动:

import pymysql

pymysql.install_as_MySQLdb()

2. 配置 MySQL 数据库

在 Django 项目的 settings.py 文件中,修改 DATABASES 配置为使用 MySQL:

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'your_database_name',
        'USER': 'your_database_user',
        'PASSWORD': 'your_database_password',
        'HOST': 'localhost',  # 或者你的数据库服务器地址
        'PORT': '3306',       # MySQL 默认端口
    }
}

3. 创建 MySQL 数据库

在 MySQL 中创建一个新的数据库。例如,通过 MySQL 命令行客户端或任何 MySQL 管理工具(如 phpMyAdmin 或 MySQL Workbench)执行以下命令:

CREATE DATABASE your_database_name CHARACTER SET UTF8;

4. 运行数据库迁移

在 Django 项目的根目录下运行以下命令,以应用数据库迁移并创建相应的数据库表:

python manage.py migrate

5. 创建超级用户

如果这是一个新项目,你可能需要创建一个新的超级用户,以便访问 admin 控制台:

python manage.py createsuperuser

6. 启动开发服务器

最后,启动 Django 开发服务器:

python manage.py runserver

访问 http://127.0.0.1:8000/admin/,使用你创建的超级用户帐户登录,验证 admin 控制台是否正常工作。

完整的 settings.py 示例

假设你的数据库名为 mydatabase,用户名为 myuser,密码为 mypassword

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

# 如果使用 PyMySQL 驱动,确保在项目的 __init__.py 文件中添加以下代码
import pymysql

pymysql.install_as_MySQLdb()

注意事项

  1. 数据库迁移:如果你已经在使用 SQLite 数据库,并且有数据需要迁移到 MySQL,可以使用工具如 django-migration 或编写自定义脚本来迁移数据。
  2. 数据库性能:确保 MySQL 服务器的配置和优化,以满足你的项目需求。
  3. 备份和恢复:定期备份 MySQL 数据库,并确保有适当的恢复策略。

通过上述步骤,你可以将 Django 项目从 SQLite 数据库切换到 MySQL 数据库,并继续正常使用 admin 控制台。

插入相关数据

访问http://localhost:8000/,因为没有数据,所有的页面清零。
在这里插入图片描述

重新插入carousel数据。

在这里插入图片描述

重新插入post数据。重新插入user数据。效果如下:

在这里插入图片描述

mysql查看数据库

打开mysql看到表结构如下,看到数据成功插入:

在这里插入图片描述

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

亚马逊对IP的要求是什么?

IP的全称为Internet Protocol,是TCP/IP体系中的网际层协议,IP只为主机提供一种无连接、不可靠的、尽力而为的数据包传输服务。IP规定网络上所有的设备都必须有一个独一无二的IP地址,就好比是邮件上都必须注明收件人地址,邮递员才能…

鸿蒙OS初识

学习官网:https://www.harmonyos.com/cn/develop 准备 注册,安装软件(node:12, DevEco Studio): https://developer.harmonyos.com/cn/docs/documentation/doc-guides/software_install-0000001053582415#ZH-CN_TOP…

OpenAI 推出ChatGPT Edu,为高校定制版本

近日,OpenAI 宣布推出 ChatGPT Edu,这是一款专为高校打造的 ChatGPT 版本,旨在帮助学生、教师、研究人员和校园运营部门以负责任的方式部署和使用 AI。 ChatGPT Edu 由 GPT-4o 提供支持,具备强大的文本和图像推理能力,…

【笔记】Sturctured Streaming笔记总结(Python版)

目录 相关资料 一、概述 1.1 基本概念 1.2 两种处理模型 (1)微批处理 (2)持续处理 1.3 Structured Streaming和Spark SQL、Spark Streaming关系 二、编写Structured Streaming程序的基本步骤 三、输入源 3.1 File源 &am…

微服务架构-微服务实施

目录 一、概述 二、微服务拆分 2.1 概述 2.2 拆分原则 2.3 拆分方法 2.3.1 以数据为维度进行拆分 2.3.2 按照使用场景拆分 2.3.3 重要和非重要的拆分 2.3.4 变和不变的拆分 三、微服务通信 3.1 概述 3.2 微服务通信方式选择 3.3 微服务编排 3.4 API接口设计 3.5 …

实验报告 Java输入和输出

实验目的: 掌握Java 输入输出流的应用 掌握缓冲流的应用。 实验要求: (1)掌握字节输入输出流的操作 (2)掌握字符输入输出流的操作 (3)理解字节流和字符流的区别 (…

游戏找不到steam_api64.dll如何解决,全面解析原因及解决方法

在现代游戏中,Steam平台已经成为了玩家们下载、安装和玩游戏的主要渠道之一。然而,有些玩家可能会遇到一个问题,即游戏找不到steam_api64.dll文件。这个问题可能会导致游戏无法正常运行或启动。本文将详细介绍如何解决这个问题,帮…

深度网络学习笔记(一)——self-attention机制介绍和计算步骤

self-attention机制介绍及其计算步骤 前言一、介绍和意义二、 计算细节2.1 计算Attention Score2.2 计算value2.3 计算关联结果b2.4 统一计算 三、总结 前言 Transformer是一种非常常见且强大的深度学习网络架构,尤其擅长处理输出为可变长度向量序列的任务&#xf…

51仿真器 PZ-51Tracker 未知设备

插上仿真器,右击我的电脑 等待一下,选择winUSB 此时在keil中选择仿真器会报错,需要安装如下我是win10) 安装好后退出再试,没有报错即可 这项也要选择 另外配置晶振

AI去衣技术中的几何着色:揭秘数字时尚的魔法

在数字化时代,人工智能(AI)正以前所未有的速度改变我们的生活,从智能家居到自动驾驶汽车,再到个性化医疗。然而,AI的影响远不止于此。它正在重塑我们对艺术、设计和时尚的理解。特别是在数字时尚领域&#…

数学建模 —— 人工神经网络(6)

目录 一、人工神经网络 1.1 人工神经网络结构 1.2 神经元/感知器 1.3 激活函数 1.3.1 sign函数 1.3.2 sigmoid函数(Logistic函数) 1.3.3 tanh双曲正切函数 1.3.4 ReLU函数 1.4 分类 二、BP人工神经网络 2.1 概述 2.2 处理过程 2.3 例题 2.…

太空音响器

目录 1.课程设计项目 2.任务和要求 3.总体功能设计与仿真 3.1.元器件汇总 3.2.总体方案设计 3.3 总体电路仿真 4.单元模块设计及电路仿真 4.1 互补型振荡器电路 5.组装,调试与测试 6.分析与总结 7.参考文献 1.课程设…

汇编原理 | 二进制、跳转指令、算数运算、

一.二进制 two complement reprentation(补码) 二进制的运算: 6的二进制 0110 -6的二进制 如何表示? 四个bit的第一个bit表示符号:1负0正 -6表示为1010 解释: 0 0000 1 0001 -1 1111(由 …

[图解]建模相关的基础知识-01

6 00:00:21,930 --> 00:00:25,450 我们尝试以一个更深的 7 00:00:25,460 --> 00:00:27,170 或者更基本的角度 8 00:00:28,410 --> 00:00:32,760 来思考建模的问题 9 00:00:37,630 --> 00:00:42,470 首先,我们来说一个观点,就是说 10 00:…

WPS部分快捷操作汇总

记录一些个人常用的WPS快捷操作 一、去除文档中所有的超链接: 1、用WPS打开文档; 2、用Ctrla全选,或者点击上方的【选择】-【全选】,选中文档全部内容; 3、按CTRLSHIFTF9组合键,即可一次性将取文档中所有…

IDEA一键启动多个微服务

我们在做微服务项目开发的时候,每次刚打开IDEA,就需要把各个服务一个个依次启动,特别是服务比较多时,逐个点击不仅麻烦还费时。下面来说一下如何一键启动多个微服务。 操作步骤 点击Edit Configurations 2.点击“”,…

数据图同步软件ETL

ETL介绍 ETL(Extract, Transform, Load)软件是专门用于数据集成和数据仓库过程中的工具。ETL过程涉及从多个数据源提取数据,对数据进行转换以满足业务需求,然后将数据加载到目标数据库或数据仓库中。以下是ETL软件的一些关键功能…

matplotlib实现双柱图

1,读取txt文件实现数据可视化 2,txt文件如下图 姓名,语文,数学,英语 小米,98,100,20 小明,100,20,98 小黑,78,98,1003,代码如下 import matplotlib.pyplot as plt import matplotlib matplotlib.use(TkAgg) plt.rcParams[font.family]SimHe…

鸿蒙应用Stage模型【应用/组件级配置】

应用/组件级配置 在开发应用时,需要配置应用的一些标签,例如应用的包名、图标等标识特征的属性。本文描述了在开发应用需要配置的一些关键标签。 应用包名配置 应用需要在工程的AppScope目录下的[app.json5配置文件]中配置bundleName标签,…

多元分类预测 | 基于哈里斯鹰优化HHO-卷积神经网络数据分类预测

文章目录 效果一览文章概述订阅专栏只能获取一份代码部分源码参考资料效果一览 文章概述 多元分类预测 | 基于哈里斯鹰优化HHO-卷积神经网络数据分类预测 HHO-CNN 多特征输入单输出的二分类及多分类模型。程序内注释详细,直接替换数据就可以用。程序语言为matlab,程序可出分类…