Início Rápido: Conectar o Django ao SQL Server

Neste início rápido, você cria um projeto do Django, conecta-o a um banco de dados SQL Server usandomssql-django, executa migrações e executa operações de dados básicas com o DJango ORM.

Pré-requisitos

  • Python 3.8 ou posterior. O Django 6.0 requer versões Python 3.12 e posteriores.
  • Microsoft Driver ODBC 17 ou 18 para SQL Server. Consulte Baixar o Driver ODBC para SQL Server.
  • Uma instância SQL Server ou Banco de Dados SQL do Azure com um logon válido.

Etapa 1: Instalar mssql-django

Crie um ambiente virtual e instale o pacote:

python -m venv .venv
.venv\Scripts\activate
pip install mssql-django

Etapa 2: Criar um projeto do Django

Crie um novo projeto e um aplicativo do Django:

django-admin startproject myproject
cd myproject
python manage.py startapp myapp

Etapa 3: Configurar o banco de dados

Edite myproject/settings.py e substitua a configuração padrão DATABASES .

Conectar-se ao SQL Server

DATABASES = {
    "default": {
        "ENGINE": "mssql",
        "NAME": "<your-database>",
        "USER": "<your-username>",
        "PASSWORD": "<your-password>",
        "HOST": "<your-server>",
        "PORT": "1433",
    },
}

Cuidado

Use TrustServerCertificate=yes somente para desenvolvimento local com certificados autoassinados. Não o use em produção. Ele desabilita a validação da cadeia de certificados e aumenta o risco de adversário no meio. Instale um certificado confiável no servidor e conecte-se com TrustServerCertificate=no.

Conectar-se ao Banco de Dados SQL do Azure

DATABASES = {
    "default": {
        "ENGINE": "mssql",
        "NAME": "<your-database>",
        "USER": "<your-username>",
        "PASSWORD": "<your-password>",
        "HOST": "<your-server>.database.windows.net",
        "PORT": "1433",
        "OPTIONS": {
            "driver": "ODBC Driver 18 for SQL Server",
            "extra_params": "Encrypt=yes",
        },
    },
}

Etapa 4: Definir um modelo

Edite myapp/models.py:

from django.db import models

class Product(models.Model):
    name = models.CharField(max_length=100)
    price = models.DecimalField(max_digits=10, decimal_places=2)
    created_at = models.DateTimeField(auto_now_add=True)

    def __str__(self):
        return self.name

Adicione "myapp" a INSTALLED_APPS em settings.py:

INSTALLED_APPS = [
    "django.contrib.admin",
    "django.contrib.auth",
    "django.contrib.contenttypes",
    "django.contrib.sessions",
    "django.contrib.messages",
    "django.contrib.staticfiles",
    "myapp",
]

Etapa 5: Executar migrações

Gerar e aplicar migrações de banco de dados:

python manage.py makemigrations myapp
python manage.py migrate

Confirme se a myapp migração foi aplicada:

python manage.py showmigrations myapp

Você deve ver [X] 0001_initial. Se você vir [ ] 0001_initial, execute python manage.py migrate myapp novamente antes de continuar.

Etapa 6: Usar o ORM do Django

Abra o shell do Django. O shell é uma sessão interativa do Python com seu projeto Django já carregado, indicada pelo prompt >>>.

python manage.py shell

No prompt >>>, importe o modelo:

from myapp.models import Product

Crie um registro:

product = Product.objects.create(name="Widget", price=9.99)
print(f"Created: {product.name} (id={product.pk})")

Ler registros:

for p in Product.objects.all():
    print(f"{p.name}: ${p.price}")

Atualize o registro:

product.price = 12.99
product.save()

Exclua o registro:

product.delete()

Saia do shell com exit(). Como alternativa, use Ctrl+Z no Windows ou Ctrl+D no Linux ou macOS.

Note

Se você receber um erro Invalid object name 'myapp_product', a tabela myapp_product não existe no banco de dados, embora o histórico de migrações do Django afirme que 0001_initial foi aplicado. Saia do shell e, em seguida, redefina o histórico de migração e aplica-o novamente:

python manage.py migrate myapp zero --fake
python manage.py migrate myapp

Próxima etapa