クイック スタート: Django をSQL Serverに接続する

このクイック スタートでは、Django プロジェクトを作成し、mssql-djangoを使用してSQL Server データベースに接続し、移行を実行し、Django ORM を使用して基本的なデータ操作を実行します。

Prerequisites

  • Python 3.8 以降。 Django 6.0 には、Python 3.12 以降のバージョンが必要です。
  • SQL Server 用 Microsoft ODBC Driver 17 または 18 「ODBC Driver for SQL Server のダウンロード」を参照してください。
  • 有効なログインを持つ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",
    },
}

注意事項

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

"myapp"INSTALLED_APPSsettings.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 シェルを開きます。 シェルは、>>> プロンプトで示される、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 の移行履歴要求myapp_productが適用されていても、0001_initial テーブルはデータベースに存在しません。 シェルを終了し、移行履歴をリセットして再適用します。

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

次のステップ