Hızlı Başlangıç: Django'yu SQL Server bağlama

Bu hızlı başlangıçta bir Django projesi oluşturur, mssql-django kullanarak projeyi bir SQL Server veritabanına bağlar, geçişleri çalıştırır ve Django ORM ile temel veri işlemleri gerçekleştirirsiniz.

Prerequisites

  • Python 3.8 veya üzeri. Django 6.0, Python 3.12 ve sonraki sürümleri gerektirir.
  • Microsoft SQL Server için ODBC Sürücüsü 17 veya 18. bkz. SQL Server için ODBC Sürücüsünü İndirme.
  • Geçerli oturum açma bilgilerine sahip bir SQL Server örneği veya Azure SQL Veritabanı.

1. Adım: mssql-django'yu yükleme

Bir sanal ortam oluşturun ve paketi yükleyin:

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

2. Adım: Django projesi oluşturma

Yeni bir Django projesi ve uygulaması oluşturun:

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

3. Adım: Veritabanını yapılandırma

myproject/settings.py öğesini düzenleyin ve varsayılan DATABASES ayarını değiştirin.

SQL Server’a bağlanma

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

Caution

TrustServerCertificate=yes yalnızca kendinden imzalı sertifikalarla yerel geliştirme için kullanın. Üretimde kullanmayın. Sertifika zinciri doğrulamasını devre dışı bırakır ve ortadaki saldırgan riski artırır. Sunucuya güvenilir bir sertifika yükleyin ve ile TrustServerCertificate=nobağlanın.

Azure SQL Veritabanı’na bağlanma

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

4. Adım: Model tanımlama

Düzenle 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

settings.py içinde INSTALLED_APPS öğesine "myapp" ekleyin:

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

5. Adım: Geçişleri çalıştırma

Veritabanı geçişleri oluşturma ve uygulama:

python manage.py makemigrations myapp
python manage.py migrate

myapp geçişinin uygulandığını onaylayın:

python manage.py showmigrations myapp

ifadesini görmeniz [X] 0001_initialgerekir. [ ] 0001_initial görürseniz, devam etmeden önce python manage.py migrate myapp öğesini yeniden çalıştırın.

6. Adım: Django ORM'yi kullanma

Django kabuğunu açın. Shell, Django projenizin yüklendiği ve >>> istemiyle gösterilen etkileşimli bir Python oturumudur.

python manage.py shell

>>> isteminde modeli içeri aktarın:

from myapp.models import Product

Kayıt oluşturma:

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

Kayıtları okuyun:

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

Kaydı güncelleştirin:

product.price = 12.99
product.save()

Kaydı silin:

product.delete()

Kabuktan exit() ile çıkın. Alternatif olarak, Windows üzerinde Ctrl+Z veya Linux veya macOS'ta Ctrl+D kullanın.

Note

Invalid object name 'myapp_product' hatasını alırsanız, Django'nun geçiş geçmişi 0001_initial uygulanmış olarak gösterse de myapp_product tablosu veritabanında mevcut değildir. Shell'den çıkın, ardından migration geçmişini sıfırlayın ve yeniden uygulayın:

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

Sonraki adım