Mulai cepat: Menyambungkan Django ke SQL Server

Dalam mulai cepat ini, Anda membuat proyek Django, menyambungkannya ke database SQL Server menggunakan mssql-django, menjalankan migrasi, dan melakukan operasi data dasar dengan ORM Django.

Prasyarat

  • Python 3.8 atau yang lebih baru. Django 6.0 memerlukan Python 3.12 dan versi yang lebih baru.
  • Microsoft ODBC Driver 17 atau 18 untuk SQL Server. Lihat Mengunduh Driver ODBC untuk SQL Server.
  • Instans SQL Server atau Azure SQL Database dengan login yang valid.

Langkah 1: Instal mssql-django

Buat lingkungan virtual dan instal paket:

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

Langkah 2: Membuat proyek Django

Buat proyek dan aplikasi Django baru:

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

Langkah 3: Mengonfigurasi database

Edit myproject/settings.py dan ganti pengaturan default DATABASES .

Sambungkan ke SQL Server

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

Perhatian

Gunakan TrustServerCertificate=yes hanya untuk pengembangan lokal dengan sertifikat yang ditandatangani sendiri. Jangan gunakan dalam produksi. Ini menonaktifkan validasi rantai sertifikat dan meningkatkan risiko serangan perantara. Instal sertifikat tepercaya di server dan sambungkan dengan TrustServerCertificate=no.

Menyambung ke Azure SQL Database

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",
        },
    },
}

Langkah 4: Tentukan model

Edit 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

Tambahkan "myapp" ke INSTALLED_APPS dalam settings.py:

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

Langkah 5: Jalankan migrasi

Buat dan terapkan migrasi database:

python manage.py makemigrations myapp
python manage.py migrate

Konfirmasikan bahwa myapp migrasi telah diterapkan:

python manage.py showmigrations myapp

Anda seharusnya melihat [X] 0001_initial. Jika Anda melihat [ ] 0001_initial, jalankan python manage.py migrate myapp ulang sebelum melanjutkan.

Langkah 6: Gunakan Django ORM

Buka shell Django. Shell adalah sesi Python interaktif dengan proyek Django Anda yang sudah dimuat, ditandai dengan prompt >>>.

python manage.py shell

Pada prompt >>>, impor model:

from myapp.models import Product

Membuat rekaman:

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

Membaca rekaman:

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

Perbarui catatan:

product.price = 12.99
product.save()

Hapus rekaman:

product.delete()

Keluar dari shell dengan exit(). Atau, gunakan Ctrl+Z di Windows, atau Ctrl+D di Linux atau macOS.

Note

Jika Anda mendapatkan kesalahan Invalid object name 'myapp_product', tabel myapp_product tidak ada di database meskipun riwayat migrasi Django menyatakan bahwa 0001_initial telah diterapkan. Keluar dari shell, lalu reset riwayat migrasi dan terapkan kembali:

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

Langkah selanjutnya