この記事はmssql-django Djangoデータベースバックエンドの完全なsettings.py設定リファレンスです。 Djangoプロジェクトのsettings.pyファイル内のDATABASES辞書を編集して接続性SQL Server設定してください。
最小構成
以下の例は最小必要構成を示しています:
DATABASES = {
"default": {
"ENGINE": "mssql",
"NAME": "<your-database>",
"USER": "<your-username>",
"PASSWORD": "<your-password>",
"HOST": "<your-server>",
"PORT": "1433",
"OPTIONS": {
"driver": "ODBC Driver 18 for SQL Server",
},
},
}
データベース接続設定
これらの設定は DATABASES 接続の設定を行います。 ほとんどは標準的なDjangoの設定です。例外を記載します:
| Setting | タイプ | Description |
|---|---|---|
ENGINE |
String |
"mssql"である必要があります。 |
NAME |
String | データベース名。 必須。 |
HOST |
String | サーバーのホスト名かIPアドレス。 名前付きインスタンスには "server\\instance" 形式を使用してください。 |
PORT |
String | サーバーインスタンスポート。 空文字列はデフォルトのポートを意味します。 |
USER |
String | データベース ユーザー名。 もし提供されない場合は、Windows統合セキュリティが使用されます。 |
PASSWORD |
String | データベースのユーザーパスワード。 |
AUTOCOMMIT |
ブール値 | Djangoのトランザクション管理を無効にするために False に設定してください。 既定値は True です。 |
Trusted_Connection |
String |
USERが提供されていない場合Windows統合セキュリティを使うように、"yes"(デフォルト)に設定してください。
USERとPASSWORDの両方が設定されている場合、その資格が優先され、Trusted_Connectionは無視されます。
"no"に設定してWindows 認証を明示的に無効にします。 これは標準的なDjangoの設定ではなく、 mssql-django 拡張です。 |
TOKEN |
String | Microsoft Entra認証のためのアクセストークン(例えばazure.identity経由)。 これは標準的なDjangoの設定ではなく、 mssql-django 拡張です。 |
テスト設定
これらの設定は、Djangoのテストランナーが使用するテストデータベースを制御します。
| Setting | タイプ | Description |
|---|---|---|
NAME |
String | テストデータベース名。 既定値: "test_" + NAME。 |
COLLATION |
String | テストデータベース用の照合。 デフォルト:インスタンスデフォルト。 |
DEPENDENCIES |
一覧 | データベースの作成順序依存関係。 |
MIRROR |
String | テスト中にミラーリングするためのデータベースの別名。 |
例:
DATABASES = {
"default": {
"ENGINE": "mssql",
"NAME": "<your-database>",
"USER": "<your-username>",
"PASSWORD": "<your-password>",
"HOST": "<your-server>",
"PORT": "1433",
"OPTIONS": {
"driver": "ODBC Driver 18 for SQL Server",
},
"TEST": {
"NAME": "test_mydb",
"COLLATION": "SQL_Latin1_General_CP1_CI_AS",
},
},
}
オプション
OPTIONS辞書はバックエンド固有の構成を提供します。 これらの設定を DATABASES["default"]["OPTIONS"] 辞書に入れます:
| オプション | タイプ | デフォルト | Description |
|---|---|---|---|
driver |
String | "ODBC Driver 18 for SQL Server" |
ODBCドライバーの使用。 ドライバー18がインストールされていないと自動的にドライバー17に戻されます。 |
isolation_level |
String | None |
トランザクション分離レベル: READ UNCOMMITTED、 READ COMMITTED、 REPEATABLE READ、 SNAPSHOT、または SERIALIZABLE。 |
dsn |
String | None |
DSNと名付けられました。
HOSTの代わりに使えます。 |
host_is_server |
ブール値 | False |
Trueに設定して、freetds.confデータサーバー名ではなくFreeTDSで直接HOST/PORTを使うようにしています。 |
unicode_results |
ブール値 | False |
pyodbcの unicode_results 機能を有効にしてください。 |
extra_params |
String | None |
追加のODBCパラメータは "param=value;param=value" 形式で示されています。
Microsoft Entra認証に使用。 |
collation |
String | None |
テキストフィールドの検索のためのコレーション(例: "Chinese_PRC_CI_AS")。 |
connection_timeout |
Integer | 0 |
接続タイムアウトは秒単位(0 =無効)。 |
connection_retries |
Integer | 5 |
接続再試行回数。 |
connection_retry_backoff_time |
Integer | 5 |
リトライの間隔は数秒で下がる。 |
query_timeout |
Integer | 0 |
クエリのタイムアウトは秒単位(0 = 無効)。 |
setencoding / setdecoding |
一覧 | None |
pyodbc エンコーディング / デコード 構成。 |
return_rows_bulk_insert |
ブール値 | False |
バルクインサートからの返品行を許可してください。 テーブルにトリガーがある場合は False に違いありません。 |
datefirst |
Integer | 7 |
SET DATEFIRSTの週の初日です。
7は日曜日(SQL Serverデフォルト)、1は月曜日です。 |
driver_needs_utf8 |
プレゼンスオンリーオプション | 未設定 | ODBCドライバーのUTF-8エンコーディングを有効にしてください。 このオプションは、キーが OPTIONSに存在し、値自体は無視されるときに有効になります。 通常、FreeTDSやLabin-1をデフォルトで使う古いUnixODBC構成で必要です。 |
driver_charset |
String | None |
ODBCドライバー用の明示的な文字セット(例: "UTF-8")。 ドライバーがエンコードを自動的に検出しない場合は driver_needs_utf8 と組み合わせて使う。 |
connection_recovery_interval_msec |
Float | 0.0 |
ネットワークエラー後のバックエンドの接続復旧ループで再試行の間隔を待つためのミリ秒。 不安定なネットワークリンクの場合はこの値を上げます。 |
一般的な選択肢の例:
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",
"isolation_level": "READ COMMITTED",
"connection_timeout": 30,
"connection_retries": 3,
"connection_retry_backoff_time": 5,
"query_timeout": 60,
},
},
}
バックエンド固有の設定
この設定は settings.pyのモジュールレベル、 DATABASES 辞書の外に位置しています:
| Setting | タイプ | デフォルト | Description |
|---|---|---|---|
DATABASE_CONNECTION_POOLING |
ブール値 | True |
Falseに設定してpyodbcの接続プーリングを無効にしてください。 |
例:
DATABASES = {
"default": {
"ENGINE": "mssql",
"NAME": "<your-database>",
"USER": "<your-username>",
"PASSWORD": "<your-password>",
"HOST": "<your-server>",
"PORT": "1433",
"OPTIONS": {
"driver": "ODBC Driver 18 for SQL Server",
},
},
}
# Set this to False to disable pyodbc's connection pooling
DATABASE_CONNECTION_POOLING = False