Ir para o conteúdo

Django: Como configurar o banco de dados MySQL (mysqlclient)

Neste post veremos como realizar a configuração do banco de dados MySQL utilizando o driver mysqlclient no framework web Django.

Atenção

Testado no Django 3.1.

Atenção

O framework Django 3.1 suporta MySQL 5.6 ou superior.

Storage engines

mysqlclient

O mysqlclient é o driver recomendado pela documentação do Django.

Dependências

Ubuntu
1
2
3
4
sudo apt install \
python3-dev \
default-libmysqlclient-dev \
build-essential
Fedora
1
2
3
sudo dnf install \
python3-devel \
mysql-devel

Instalação

1
pip install mysqlclient

Conexão

A configuração da conexão é feita na variável DATABASES do arquivo settings.py:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
# settings.py
DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'database_name',
        'USER': 'dbuser',
        'PASSWORD': '123456',
        'HOST': '0.0.0.0',
        'PORT': '3306',
        'OPTIONS': {'charset': 'utf8mb4'},
    }
}

Onde:

  • ENGINE: Driver será usado pelo Django.
  • NAME: Nome do database que será usado nessa conexão.
  • USER: Nome do usuário que irá utilizar o banco. Usuário deve ter as permissões necessária para manipular o banco.
  • PASSWORD: Senha do usuário.
  • HOST: IP ou nome do computador onde o banco de dados está sendo executado.
  • PORT: Porta que o banco de dados está utilizando. O padrão é 3306.

Também é possível utilizar uma arquivo com os parâmetros de conexão, para isso:

1
2
3
4
5
6
7
8
9
# settings.py
DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'OPTIONS': {
            'read_default_file': str(BASE_DIR.joinpath('mysql.cnf')),
        },
    }
}

Nota

O arquivo de configuração pode estar em outros diretórios.

No arquivo mysql.cnf :

1
2
3
4
5
6
7
8
# mysql.cnf
[client]
database = database_name
user = dbuser
password = 123456
host = 0.0.0.0
port = 3306
default-character-set = utf8mb4

Nota

Lembre-se de adequar conforme as suas necessidades.


Extra

Docker compose

Configuração do banco que foi utilizada nos testes:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
# docker-compose.yml
version: "3"

services:
  db:
    image: mysql:8.0.23
    # image: mysql:5.7.33
    container_name: MySQL
    restart: on-failure
    ports:
      - "3306:3306"
    environment:
      MYSQL_USER: dbuser
      MYSQL_PASSWORD: 123456
      MYSQL_ROOT_PASSWORD: 123456
      MYSQL_DATABASE: database_name

Nota

Arquivo docker-compose.yml testado com podman-compose.


Comentários