如何连接 MySQL 到 Django

17 Mar 2025 | 4 分钟阅读

数据库是 Web 应用程序中存储和组织数据的重要组成部分。每当我们开发应用程序/网站时,我们需要选择一个合适的数据库,使其更具交互性。

Django 自带一个内置的 SQLite 数据库。但是,我们可以在 Django 中使用各种数据库。以下是 Django 支持的数据库列表。

  • PostgreSQL
  • MariaDB
  • MySQL
  • Oracle
  • SQLite

还有许多第三方提供的数据库后端。 Django 中间件允许我们与数据库通信。在本教程中,我们将学习如何将 MySQL 数据库连接到我们的 Django 应用程序。

前提条件

  • 必须安装 MySQL server 5.7+
  • 必须安装 Python 3.0+

我们假设您已经在本地计算机上安装了 MySQL 服务器。 如果您尚未安装,请从 MySQL 官方网站下载。

实施

我们使用以下步骤来建立 Django 和 MySQL 之间的连接。

步骤 1:创建一个虚拟环境并设置 Django 项目

首先,我们将创建虚拟环境并在其中安装 Django。 我们跳过此过程,因为它会延长本教程。 我们使用以下命令创建新项目。

命令末尾的点(.)表示我们正在工作目录中创建项目。 如果未提供点,则将在名为 MyProject 的新目录中创建该项目,并且该目录包含我们的实际 django 文件。

现在使用以下命令启动服务器。

终端将显示链接 http://127.0.0.1:8000,访问此链接

步骤 2:创建新数据库

我们可以使用两种方法创建数据库 - MySQL Workbench 和 MySQL shell。 MySQL Workbench 是 MySQL 数据库的 GUI 工具,提供 SQL 开发、数据建模和服务器管理等功能。 我们将使用 MySQL shell,更推荐用于学习目的。

  • 连接 MySQL 服务器
How to connect MySQL to Django
  • 使用 SQL 查询创建数据库

使用 create database my_database 查询。 它将创建新数据库。

How to connect MySQL to Django

我们可以通过 show databases 查询检查数据库。

它显示了 MySQL 服务器中所有可用的数据库。

步骤 3:更新 settings.py

创建数据库后,我们必须使用以下设置配置更新 settings.py 文件的数据库部分。

让我们了解一下我们上面所做的。

  • 首先,我们将“django.db.backends.sqlite3”替换为“django.db.backends.mysql”。 这基本上表明我们将 SQLite 转移到 MySQL 数据库。
  • NAME 表示我们要使用的数据库的名称。
  • USER 是有权访问数据库并充当数据库管理员的 MYSQL 用户名。
  • PASSWORD 是数据库的密码。 它将在 MySQL 安装时创建。
  • 'HOST'是'127.0.0.1','PORT' '3306'表示 MySQL数据库使用主机名“0.0.1托管,并侦听特定端口号3306
  • 在最后一行中,我们使用 SET sql_mode = 'STATIC_TRANS_TABLES',它用于处理 INSERT 和 UPDATE 语句从数据库中存储的无效或缺失值。

步骤 4:安装 mysqlclient 包

在安装 mysqlclient 包之前,让我们了解一下 mysqlclient 是什么以及为什么使用它。 mysqlclient 是 MySQL 的 Python 接口,允许 Python 项目连接到 MySQL 服务器。

因此,有必要安装 mysqlclient 包以建立 MySQL 和 Django 之间的连接。 要安装,请在工作目录中使用以下命令。

步骤 5:运行 migrate 命令

现在我们已准备好在新创建的数据库中迁移或创建表。 在最后一步中,我们将运行 migrate 命令,它将在 my_database 数据库中创建现有表。

运行此命令后,Django 将自动创建必要的表,例如 auth_group、auth_user、auth_permission 等。 它还将创建 models.py 文件中定义的表。

mysql> use my_database;

Database changed

mysql> show tables;


How to connect MySQL to Django

结论

在本教程中,我们讨论了如何在 Django 中使用 MySQL 数据库。 虽然 Django 自带内置数据库 SQLite,但有时它无法满足要求。 因此,我们可以连接到各种数据库。