django2.2版本连接mysql数据库的方法

  • Post category:Python

连接 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 存储数据的简单示例。