Краткое руководство: подключить Django к SQL Server

В этом кратком руководстве описано, как создать проект Django, подключить его к базе данных SQL Server с помощьюmssql-django, выполнить миграцию и выполнить основные операции с данными с помощью Django ORM.

Необходимые условия

  • Python 3.8 или более поздней версии. Для Django 6.0 требуется Python версии 3.12 и более поздних версий.
  • Microsoft драйвер ODBC 17 или 18 для SQL Server. См. раздел "Скачать драйвер ODBC для SQL Server".
  • Экземпляр SQL Server или база данных База данных SQL Azure с действительной учетной записью для входа.

Шаг 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.

Подключение к База данных SQL 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",
        },
    },
}

Шаг 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

Добавить "myapp" в INSTALLED_APPS в settings.py:

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. Оболочка — это интерактивный сеанс Python с загруженным проектом Django; на это указывает приглашение >>>.

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(). Кроме того, используйте CTRL+Z в Windows или CTRL+D в Linux или macOS.

Note

Если возникает ошибка Invalid object name 'myapp_product', таблица myapp_product не существует в базе данных, хотя история миграций Django показывает, что 0001_initial применена. Выйдите из оболочки, затем сбросьте историю миграции и примените её повторно:

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

Следующий шаг