DEV Community

Francisco Júnior
Francisco Júnior

Posted on

Conectando o Django ao Banco de Dados Microsoft SQL Server (MSSQL)

Conectar o Django a um banco de dados Microsoft SQL Server é essencial para muitos projetos. No entanto, é crucial seguir um processo adequado para garantir uma conexão estável e flexível. Este guia detalhado oferece as etapas necessárias para estabelecer essa conexão de maneira eficiente.

Requisitos de Conectividade

Ao conectar o Django a um banco de dados MSSQL, alguns requisitos devem ser considerados:

  • Conectar o Django tanto ao Microsoft SQL Server quanto ao Azure SQL Database.
  • Manter as tabelas do banco de dados organizadas em um esquema único.
  • Facilitar a configuração das definições do banco de dados.
  • Ser capaz de alternar entre diferentes motores de banco de dados (por exemplo, localmente trabalhar com SQLite e em produção com o Banco de Dados Azure SQL).

Pacotes Utilizados

Para alcançar essa conectividade, usaremos principalmente dois pacotes: mssql-django e django-environ.

  1. mssql-django: Este pacote é um fork do django-mssql-backend e utiliza internamente o pacote pyodbc.

  2. django-environ: Essa ferramenta é empregada para uma configuração mais flexível e fácil, especialmente ao lidar com variáveis de ambiente.

Passos para Configuração

1. Configurando a Conectividade com o Banco de Dados

Comece instalando o pacote mssql-django:

$ pip install mssql-django
Enter fullscreen mode Exit fullscreen mode

Após a instalação, atualize o arquivo settings.py do seu projeto Django com as informações de conexão. Aqui está um exemplo:

# Configurações de Banco de Dados
DATABASES = {
    'default': {
        'ENGINE': 'mssql',
        'NAME': 'nomedoseubanco',
        'USER': 'usuario@seuservidor',
        'PASSWORD': 'suasenha',
        'HOST': 'seuservidor.database.windows.net',
        'PORT': '',
        'OPTIONS': {
            'driver': 'ODBC Driver 17 for SQL Server',
        },
    },
}
Enter fullscreen mode Exit fullscreen mode
2. Configurando o Esquema do Banco de Dados para a Aplicação Django

No Django, as tabelas do banco de dados são mantidas no esquema padrão, mas não há uma maneira direta de especificar o esquema para armazenar essas tabelas. No entanto, podemos definir um esquema padrão para o usuário do banco de dados da aplicação:

IF NOT EXISTS (SELECT 1 FROM information_schema.schemata WHERE schema_name = 'nomedoseuesquema' )
BEGIN
   EXEC('CREATE SCHEMA [nomedoseuesquema] AUTHORIZATION [usuario@seuservidor]');
END

EXEC('ALTER USER [usuario@seuservidor] WITH DEFAULT_SCHEMA = [nomedoseuesquema]');
Enter fullscreen mode Exit fullscreen mode
3. Configurando o Banco de Dados usando Variáveis de Ambiente

Para flexibilidade na configuração, o pacote django-environ pode ser usado. É possível definir variáveis de ambiente para facilitar a configuração do banco de dados.

# Configuração com django-environ
import environ

# Mapeamento do mecanismo mssql para o padrão do Django
environ.Env.DB_SCHEMES['mssql'] = 'mssql'
env = environ.Env(DEBUG=(bool, False))

# Use o banco de dados SQLite se a variável de ambiente DATABASE_URL não estiver definida
# Defina suas variáveis de ambiente conforme necessário
# ...

DATABASES = {
    'default': env.db('DJANGO_DATABASE_URL', default=DEFULT_DATABASE_URL)
}
Enter fullscreen mode Exit fullscreen mode

Para finalizar, é possível definir e utilizar variáveis de ambiente para a URL do banco de dados, o nome de usuário e a senha, permitindo uma configuração dinâmica.

Conclusão

Conectar o Django ao Microsoft SQL Server requer um processo bem estruturado e a utilização de pacotes adequados para garantir uma conectividade estável e flexível. Utilizando o mssql-django e o django-environ, é possível configurar e administrar a conexão de maneira eficiente, facilitando a transição entre diferentes motores de banco de dados e garantindo a organização adequada das tabelas.

Com este guia, espera-se que a configuração e a manutenção da conexão entre o Django e o MSSQL sejam simplificadas, permitindo um desenvolvimento mais fluido e eficiente em suas aplicações.

Top comments (0)