Django 是一个免费且开源的 Web 框架,构建于 Python。Django 首次发布于 2005 年,秉承“快速开发和干净、务实的设计”这一座右铭。该框架部署在 Web 服务器上,可以快速生成具有丰富功能、安全性和可扩展性的 Web 前端。
任何 Web 应用程序都依赖数据库来存储其内容。Django 作为一个现代框架,支持许多标准的数据库程序,例如 PostgreSQL, SQLite, MySQL 等。本指南将展示如何将 Django 应用程序连接到 MySQL 数据库.
前提条件
要学习本教程,在开始连接 Django 和数据库之前,您需要满足某些前提条件:
- 一个合适的 Web 服务器。在本指南中,我们将使用 Ubuntu 服务器.
- 一个配置妥当的 Python 3 开发环境.
- 一个数据库应用程序。这里有一份关于安装和使用 MySQL.
安装和配置 Python 3
Django 是用 Python 编写的。运行任何 Python 应用程序都需要在系统中安装 Python 二进制文件。Ubuntu 默认安装了 Python。在这里,我们将使用 Python 3。在终端中运行以下命令。首先,更新 APT 缓存并升级(如果可用)所有已安装的软件包:
|
1 |
$ sudo apt update && sudo apt upgrade -y |
Python 3 可以直接从官方 Ubuntu 软件包服务器获取。软件包
python-is-python3 创建了一个指向 python 二进制文件的软链接,指向
python3,以便于使用:
|
1 |
$ sudo apt install python3 python-is-python3 |
接下来,验证安装是否成功:
|
1 2 |
$ python3 --version $ python --version |
之后,我们需要 pip。它是标准的 Python 软件包管理器。它负责管理不属于标准库的其他 Python 库。请注意,我们正在安装 pip3(适用于 Python 3):
|
1 |
$ sudo apt install python3-pip |
最后,我们需要一些额外的软件包来构建一个健壮的编程环境:
|
1 |
$ sudo apt install build-essential libssl-dev libffi-dev python3-dev |
安装和配置 MySQL
本节将简要演示如何安装和配置 MySQL。它可以从默认的 Ubuntu 软件包仓库中获取:
|
1 |
$ sudo apt install mysql-server |
如果安装成功,MySQL 将开始在后台运行。验证其是否正常工作:
|
1 |
$ systemctl status mysql |
MySQL 服务器已启动并运行。我们现在可以安全地过渡到 Django 应用程序的开发。
使用 Django
-
建立示例 Django 应用程序
我们 Web 应用程序的基础工作需要 Django 项目骨架。它包含了创建健壮的 Web 应用程序所需的所有必要工具和库。首先,我们将为我们的 Django 应用程序创建一个专用目录。建议将该目录命名为有意义且与我们要构建的应用程序一致的名称。在此演示中,我们将其命名为 myDemoApp:
|
1 |
$ mkdir -pv myDemoApp |
我们需要 Python 的 venv 模块在目录中创建一个虚拟环境。使用以下命令安装该模块 APT:
|
1 |
$ sudo apt install python3-venv |
然后,导航 to 该目录并建立一个虚拟环境。为了清晰起见,我们将该环境命名为 demoapp_env:
|
1 |
$ python3 -m venv demoapp_env |
接下来,通过运行以下命令激活虚拟环境 activate 脚本:
|
1 |
$ . demoapp_env/bin/activate |
我们现在将在这个专用的虚拟环境中安装 Django。Pip 将下载并安装一些额外的组件:
|
1 |
$ pip install django |
Django 已安装并准备就绪。调用 django-admin 命令来创建一个新的 Django 项目。之后,给该应用程序起一个合适的名称:
|
1 |
$ django-admin startproject demoapp |
它将创建一个包含所需项目文件和目录的演示项目:
|
1 |
$ ls -l |
项目骨架已准备就绪。接下来,我们需要对其进行妥善配置以实现我们的目标。
-
编辑 Django 项目设置
项目的所有配置都存储在文件 settings.py 中。它位于 Django 项目目录内。我们将首先设置一个合适的时区,并列出可以连接到 Django 应用的主机。在文本编辑器中打开配置文件:
|
1 |
$ nano ~/myDemoApp/demoapp/demoapp/settings.py |
向下滚动脚本并找到条目 TIME_ZONE。为了进行演示,时区被设置为 America/New_York:
|
1 |
$ TIME_ZONE = 'America/New_York' |
作为参考,以下命令将打印 Linux 中所有支持的时区:
|
1 |
$ timedatectl list-timezones |
接下来,滚动到条目 ALLOWED_HOSTS。它控制哪些机器可以访问该应用。为了进行演示,它仅包含 localhost:
|
1 |
$ ALLOWED_HOSTS = ['localhost'] |
|
1 |
$ python manage.py migrate |
现在,我们需要为 Web 应用创建一个管理员账户。该账户将用于访问 Django 管理界面。运行以下命令:
|
1 |
$ python manage.py createsuperuser |
它将要求输入用户名、电子邮件和密码。该应用现在已准备好连接到数据库。
MySQL 连接
-
安装 MySQL 连接器和开发库
为了将 MySQL 集成到 Django 应用中,我们需要一些额外的 Python 3 库来提供必要的工具。我们将使用数据库连接器 mysqlclient。它是 MySQLdb.
的分支。确保我们已安装 python3-dev:
|
1 |
$ sudo apt install python3-dev |
我们还需要一些额外的 Python 和 MySQL 头文件及库:
|
1 |
$ sudo apt install python3-dev libmysqlclient-dev default-libmysqlclient-dev |
安装完成后,使用 pip 来安装 Python 模块 mysqlclient。它可能会生成一些可以忽略的错误消息:
|
1 |
$ pip install mysqlclient |
-
配置专用数据库
下一步是为我们的 Django 应用配置专用数据库和数据库用户。以 root 用户身份启动 MySQL shell:
|
1 |
$ sudo mysql -u root |
要检查当前所有可用的数据库,请运行以下查询:
|
1 |
$ SHOW DATABASES; |
让我们为 Django 应用创建一个专用数据库。给它起一个与项目名称一致的合适名称:
|
1 |
$ CREATE DATABASE demoapp_data; |
然后,验证创建:
|
1 |
$ SHOW DATABASES; |
现在,创建一个专用的 MySQL 用户。我们将把该用户配置为数据库的所有者。Django 应用将使用该用户的凭据来操作 MySQL 数据库:
|
1 |
$ CREATE USER 'demoapp_user'@'%' IDENTIFIED WITH mysql_native_password BY 'password123'; |
授予用户 demoapp_user 针对数据库 demoapp_data 的全部权限:
|
1 |
$ GRANT ALL ON demoapp_data.* TO 'demoapp_user'@'%'; |
要使权限更改生效,请重新加载 MySQL 授权表:
|
1 |
$ FLUSH PRIVILEGES; |
-
将数据库连接到 Django 应用
最后,我们将配置 Django 应用以使用该数据库进行数据存储。打开配置脚本 settings.py:
|
1 |
$ nano ~/myDemoApp/demoapp/demoapp/settings.py |
向下滚动到条目 DATABASES 并输入以下代码:
|
1 2 3 4 5 6 7 8 |
DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mysql', 'OPTIONS': { 'read_default_file': '/etc/mysql/my.cnf', }, } } |
保存文件并关闭编辑器。下一步是设置前面代码中描述的配置文件。使用 sudo 在描述的位置打开文本文件:
|
1 |
$ sudo nano /etc/mysql/my.cnf |
此配置文件将包含有关 Django 专用数据库以及我们在 MySQL 服务器中创建的用户的信息。在文件末尾添加以下行:
|
1 2 3 4 5 |
[client] database = demoapp_data user = demoapp_user password = password123 default-character-set = utf8 |
|
1 2 |
$ sudo systemctl daemon-reload $ sudo systemctl restart mysql |
-
测试 MySQL 连接
现在是验证 MySQL 连接是否正常工作的时候了。如果 Django 服务器运行没有问题,那么连接就正常。否则,就是出了问题。首先,应用对 Django 项目所做的所有更改:
|
1 |
$ python manage.py migrate |
|
1 2 |
$ cd ~/myDemoApp/demoapp $ python manage.py runserver <server_ip_address>:8000 |
|
1 |
$ http://<server_ip_address>:8000 |
瞧!我们已成功进入 Django 成功页面。这也验证了 MySQL 连接工作正常。任务完成后,您可以安全地退出虚拟环境:
|
1 |
$ deactivate |
结语
在本指南中,您学习了将 Django 和 MySQL 结合在一起的基础知识。我们创建了一个 Django 应用,并展示了如何将其与 MySQL 数据库连接。奥秘就在于 Django 配置文件 settings.py。我们还修改了一些基本设置,例如 ALLOWED_HOSTS 和 TIME_ZONE。Django 非常灵活。除了 MySQL,它还支持其他 SQL 服务器(如 PostgreSQL)、服务器引擎(如 Nginx)等。
您还可以查看我们关于安装、配置和使用 Django 的最佳实践指南:
- 在 Ubuntu 20.04 上安装 Django Web 框架
- 在 Ubuntu 20.04 上使用 PostgreSQL、Nginx 和 Gunicorn 设置 Django
- 创建 Django 模型:教程
祝您计算愉快!










评论
暂无评论。发表第一条评论吧。