连接 MySQL 数据库是 Django 开发中非常常见的需求。在 Django 2.2 版本中,我们可以通过以下步骤来配置连接:
安装 MySQL 驱动
在 Django 中连接 MySQL 数据库需要使用第三方库 mysqlclient 或者 PyMySQL。我们这里使用 mysqlclient。使用 pip 命令安装 mysqlclient:
pip install mysqlclient
配置数据库连接
在 Django 项目的 settings.py 文件中,我们可以找到 DATABASES 字典,它是 Django 中配置数据库的地方。我们在这里配置连接 MySQL 的相关信息:
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'yourdatabase',
'USER': 'yourusername',
'PASSWORD': 'yourpassword',
'HOST': 'yourhost',
'PORT': 'yourport',
}
}
其中,ENGINE 表示使用的数据库引擎;NAME 表示数据库的名字;USER 和 PASSWORD 分别是数据库的用户名和密码;HOST 是数据库的地址,一般为本地地址;PORT 是数据库的端口,默认情况下为 3306。
示例1:使用 MySQL 数据库存储 session
我们可以将 Django 中的 session 存储在 MySQL 数据库中,以解决多服务器负载均衡时 session 不一致的问题。
在 settings.py 中加入以下配置:
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'yourdatabase',
'USER': 'yourusername',
'PASSWORD': 'yourpassword',
'HOST': 'yourhost',
'PORT': 'yourport',
'OPTIONS': {
'init_command': 'SET default_storage_engine=INNODB',
'charset': 'utf8mb4',
},
}
}
SESSION_ENGINE = 'django.contrib.sessions.backends.cache'
SESSION_CACHE_ALIAS = 'default'
SESSION_COOKIE_NAME = 'your_cookie_name'
SESSION_COOKIE_AGE = 86400
SESSION_COOKIE_PATH = '/'
SESSION_COOKIE_SECURE = False
SESSION_COOKIE_HTTPONLY = True
SESSION_EXPIRE_AT_BROWSER_CLOSE = False
SESSION_SAVE_EVERY_REQUEST = False
这里我们选择使用 INNODB 引擎,并设置字符集为 utf8mb4。具体参数的含义可以参考 MySQL 相关文档。
示例2:使用 MySQL 数据库存储数据
我们可以通过 Django 提供的 ORM 框架以及 MySQL 数据库,存储我们的数据。
在 models.py 中定义我们需要存储的数据模型:
from django.db import models
class Book(models.Model):
title = models.CharField(max_length=256)
author = models.CharField(max_length=256)
publish_time = models.DateTimeField()
class Meta:
db_table = "books"
在 shell 中创建模型的表:
python manage.py makemigrations
python manage.py migrate
接下来我们就可以通过以下方式来存储新的数据:
from django.utils import timezone
from .models import Book
book = Book(title='Django Connect MySQL 2.2', author='JavaScripter', publish_time=timezone.now())
book.save()
以上就是如何在 Django 2.2 版本中连接 MySQL 数据库的方法,以及如何在 Django 中使用 MySQL 存储数据的简单示例。