빠른 시작: Django를 SQL Server 연결

이 빠른 시작에서는 Django 프로젝트를 만들고, Django ORM을 사용하여 SQL Server 데이터베이스에 mssql-django연결하고, 마이그레이션을 실행하고, 기본 데이터 작업을 수행합니다.

사전 요구 사항

  • Python 3.8 이상. Django 6.0에는 Python 3.12 이상 버전이 필요합니다.
  • Microsoft SQL Server용 ODBC 드라이버 17 또는 18. SQL Server ODBC 드라이버 다운로드를 참조하세요.
  • 유효한 로그인이 있는 SQL Server 인스턴스 또는 Azure SQL Database.

1단계: mssql-django 설치

가상 환경을 만들고 패키지를 설치합니다.

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

2단계: Django 프로젝트 만들기

새 Django 프로젝트 및 앱을 만듭니다.

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

3단계: 데이터베이스 구성

myproject/settings.py을 편집하고 기본 DATABASES 설정을 바꾸세요.

SQL Server에 연결

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

Caution

자체 서명된 인증서를 사용하여 로컬 개발에만 사용합니다 TrustServerCertificate=yes . 프로덕션 환경에서는 사용하지 마세요. 인증서 체인 유효성 검사를 비활성화하여 중간자 공격 위험을 증가시킵니다. 서버에 신뢰할 수 있는 인증서를 설치하고 TrustServerCertificate=no로 연결합니다.

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

4단계: 모델 정의

편집 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에서 INSTALLED_APPS"myapp" 추가:

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

5단계: 마이그레이션 실행

데이터베이스 마이그레이션 생성 및 적용:

python manage.py makemigrations myapp
python manage.py migrate

myapp 마이그레이션이 적용되었는지 확인합니다.

python manage.py showmigrations myapp

[X] 0001_initial을 봐야 합니다. [ ] 0001_initial가 표시되면 계속하기 전에 python manage.py migrate myapp을 다시 실행하세요.

6단계: Django ORM 사용

Django 셸을 엽니다. 셸은 Django 프로젝트가 로드된 대화형 Python 세션이며, 이는 >>> 프롬프트로 표시됩니다.

python manage.py shell

프롬프트에서 >>> 모델을 가져옵니다.

from myapp.models import Product

레코드 만들기:

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

레코드 읽기:

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

레코드를 업데이트합니다.

product.price = 12.99
product.save()

레코드를 삭제합니다.

product.delete()

exit()를 사용하여 셸을 종료합니다. 또는 Windows Ctrl+Z를 사용하거나 Linux 또는 macOS에서 Ctrl+D를 사용합니다.

Note

Invalid object name 'myapp_product' 오류가 발생하면 Django의 마이그레이션 기록에는 0001_initial가 적용된 것으로 되어 있어도 데이터베이스에 myapp_product 테이블이 존재하지 않습니다. 셸을 종료한 다음 마이그레이션 기록을 다시 설정하여 다시 적용합니다.

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

다음 단계