このクイック スタートでは、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_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 シェルを開きます。 シェルは、>>> プロンプトで示される、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