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

Neste quickstart, cria um projeto Django, liga-o a uma base de dados SQL Server usando mssql-django, executa migrações e executa operações básicas de dados com o Django ORM.

Pré-requisitos

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

Passo 1: Instalar mssql-django

Crie um ambiente virtual e instale o pacote:

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

Passo 2: Criar um projeto Django

Crie um novo projeto e aplicação Django:

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

Passo 3: Configurar a base de dados

Editar myproject/settings.py e substituir a definição padrão DATABASES .

Liga-te ao SQL Server

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

Caution

Uso TrustServerCertificate=yes apenas para desenvolvimento local com certificados auto-assinados. Não o uses na produção. Desativa a validação da cadeia de certificados e aumenta o risco de ataque de intermediário. Instale um certificado de confiança no servidor e ligue-se a 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",
        },
    },
}

Passo 4: Defina um modelo

Editar 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

Adicionar "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",
]

Passo 5: Executar migrações

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

python manage.py makemigrations myapp
python manage.py migrate

Confirme que a myapp migração foi aplicada:

python manage.py showmigrations myapp

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

Passo 6: Usa o Django ORM

Abre a carcaça do Django. A shell é uma sessão interativa do Python com o seu projeto Django carregado, como indicado pelo prompt >>>.

python manage.py shell

Na linha de comandos >>>, importe o modelo:

from myapp.models import Product

Criar um registo:

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

Leia os registos:

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

Atualize o registo:

product.price = 12.99
product.save()

Apagar o registo:

product.delete()

Sai da concha com exit(). Em alternativa, usa Ctrl+Z no Windows, ou Ctrl+D no Linux ou macOS.

Note

Se receberes um erro Invalid object name 'myapp_product', a tabela myapp_product não existe na base de dados, embora o histórico de migrações do Django indique que 0001_initial foi aplicada. Saia do shell, depois reinicie o histórico de migração e volte a aplicá-lo:

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

Passo seguinte