如何在Django中使用MySql--面向初学者

281 阅读3分钟

编码员你好。

这篇文章解释了如何在Django中使用MySql,并从默认的SQLite数据库切换到一个可用于生产的数据库管理系统(MySql)。这个话题听起来可能是一个微不足道的话题,但在我的支持会议上,我一次又一次地收到这个问题,特别是来自初学者的问题。

对于新手来说,Django是一个领先的Python网络框架,由专家使用bateries-included 概念构建。作为这样一个成熟的框架,Django提供了一种简单的方法,可以从默认的SQLite数据库切换到其他数据库引擎,如MySql、PostgreSQL或Oracle。MySql是一个强大的开源关系型数据库,信息被关联并保存在一个或多个表中。

谢谢你的阅读!- 内容由**App Generator**提供。

Django数据库系统

Django提供了一种通用的方式,可以使用一个通用接口访问多个数据库后端。理论上,Django使我们能够在不更新SQL代码的情况下在数据库引擎之间切换。默认的SQLite数据库通常可以满足小型或演示项目的所有要求,但对于生产使用,建议使用MySql或PostgreSQL等更强大的数据库引擎。

数据库的设置被保存在manage.py 文件中。在我的Django项目中,这个文件被保存在core 目录中。

< PROJECT ROOT >
   |
   |-- manage.py         # Specify the settings file 
   | 
   |-- core/             # Implements app logic 
   |    |-- settings.py  # Django app bootstrapper
   |    |-- wsgi.py      # Start the app in production
   |    |-- urls.py      # Define URLs served by all apps/nodes

让我们来看看配置数据库接口的settings.py 文件的内容。

# File: core/settings.py
...
DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.sqlite3',
        'NAME'  : 'db.sqlite3',
    }
}
...

上面的片段是由Django项目的脚手架时提供的。我们可以看到,SQLite驱动是由ENGINE 这个变量指定的。

为MySql更新Django

要使用MySql作为Django项目的后台引擎,我们需要遵循一个简单的设置。

  • 安装MySql服务器(我们也可以使用一个远程服务器)
  • 安装Mysql Python驱动--Django用来连接和通信
  • 创建Mysql数据库和用户
  • 更新Django的设置
  • 执行Django迁移并创建项目表

安装MySql服务器

安装过程在不同的系统上是不同的,但这一阶段不应该是一个阻塞点,因为Unix系统默认提供了一个MySql服务器,对于Windows,我们可以使用一个可视化的安装程序。 欲了解更多信息,请访问下载页面,选择与您的操作系统相匹配的安装程序。

安装Python驱动程序

为了成功访问Mysql引擎,Django需要一个驱动(又称连接器)来将Python查询转换为纯SQL指令。

$ pip install mysqlclient

上面的指令将在系统中全局安装Python MySql驱动。另一种方法是使用沙盒安装的virtual environment

$ # Create and activate the virtual environment
$ virtualenv env
$ source env/bin/activate
$ 
$ # install the mysql driver
$ pip install mysqlclient

创建MySql数据库

在初始安装过程中,Django创建了项目表,但不能创建数据库。为了有一个可用的项目,我们需要Django项目以后使用的数据库凭证。数据库可以用数据库工具(如MySQL Workbench)直观地创建,或使用终端。

CREATE DATABASE mytestdb;

创建一个新的MySql用户

CREATE USER 'test'@'localhost' IDENTIFIED BY 'Secret_1234';

给新创建的用户授予所有权限

GRANT ALL PRIVILEGES ON `mytestdb` . * TO 'test'@'localhost';
FLUSH PRIVILEGES; 

更新Django设置

一旦MySql数据库创建完毕,我们就可以继续更新项目设置以使用MySql服务器。

# File: core/settings.py
...
DATABASES = {
    'default': {
        'ENGINE'  : 'django.db.backends.mysql', # <-- UPDATED line 
        'NAME'    : 'mytestdb',                 # <-- UPDATED line 
        'USER'    : 'test',                     # <-- UPDATED line
        'PASSWORD': 'Secret_1234',              # <-- UPDATED line
        'HOST'    : 'localhost',                # <-- UPDATED line
        'PORT'    : '3306',
    }
}
...

启动项目

我们的简单教程的下一步是运行Django迁移,它将创建所有必要的表。

$ # Create tables
$ python manage.py makemigrations
$ python manage.py migrate

启动Django项目

$ # Start the application (development mode)
$ python manage.py runserver

此时,Django应该已经成功连接到Mysql服务器,我们可以检查数据库并列出数据库迁移过程中新创建的表。

Django configured to use MySql - The default page.

谢谢你的阅读!如需更多资源,请随时访问。