mssql-django konfigurationsreferenz

Dieser Artikel ist die vollständige settings.py Konfigurationsreferenz für das mssql-django Django-Datenbank-Backend. Konfigurieren Sie die SQL Server-Konnektivität, indem Sie das DATABASES Wörterbuch in der settings.py Datei Ihres Django-Projekts bearbeiten.

Minimale Konfiguration

Das folgende Beispiel zeigt die minimal erforderliche Konfiguration für den Standardpfad 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",
        },
    },
}

Um stattdessen den Alias auszuführen mssql-python , python_driver setze und lass driver. Der Weg mssql-python ignoriert driver:

DATABASES = {
    "default": {
        "ENGINE": "mssql",
        "NAME": "<database>",
        "USER": "<user_id>",
        "PASSWORD": "<password>",
        "HOST": "<server>",
        "PORT": "1433",
        "OPTIONS": {
            "python_driver": "mssql_python",
        },
    },
}

ENGINE "mssql" bleibt auf beiden Pfaden. Aliase im selben Projekt können unterschiedliche Treiber verwenden. Für die vollständige Liste der Verhaltensunterschiede siehe Select the database driver for mssql-django.

Sofern nicht anders angegeben, zeigen die Beispiele im restlichen Teil dieses Artikels den Standardpfad pyodbc .

Datenbank-Verbindungseinstellungen

Diese Einstellungen konfigurieren deine DATABASES Verbindung. Die meisten sind Standard-Django-Einstellungen; Ausnahmen werden vermerkt:

Setting Typ Description
ENGINE String Muss "mssql" sein.
NAME String Datenbankname. Erforderlich.
HOST String Server-Hostname oder IP-Adresse. Verwenden Sie "server\\instance" das Format für benannte Instanzen.
PORT String Server-Instanz-Port. Leerer String bedeutet Standard-Port.
USER String Datenbank-Benutzername. Falls nicht angegeben, wird Windows Integrated Security verwendet.
PASSWORD String Datenbank-Benutzerpasswort.
AUTOCOMMIT Boolean Auf eingestellt False , um Djangos Transaktionsverwaltung zu deaktivieren. Der Standardwert ist True.
Trusted_Connection String Setze auf "yes" (Standard) die Nutzung von Windows Integrated Security, wenn USER nicht bereitgestellt wird. Wenn USER und PASSWORD beide gesetzt sind, haben diese Zugangsdaten Vorrang und Trusted_Connection werden ignoriert. Setzen Sie die "no" Windows-Authentifizierung explizit aus. Das ist eine mssql-django Erweiterung, kein Standard-Django-Setting.
TOKEN String Zugriffstoken für Microsoft Entra-Authentifizierung (zum Beispiel über azure.identity). Das ist eine mssql-django Erweiterung, kein Standard-Django-Setting.

TEST-Einstellungen

Diese Einstellungen steuern die Testdatenbank, die von Djangos Testrunner verwendet wird:

Setting Typ Description
NAME String Name der Testdatenbank. Standardwert: "test_" + NAME.
COLLATION String Zusammenstellung für die Testdatenbank. Standard: Instanz Standard.
DEPENDENCIES List Erstellungsreihenfolge-Abhängigkeiten der Datenbank.
MIRROR String Alias einer Datenbank zum Spiegeln während des Tests.

Beispiel:

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

OPTIONEN

Das Wörterbuch OPTIONS bietet backend-spezifische Konfigurationen. Fügen Sie diese Einstellungen ins Wörterbuch DATABASES["default"]["OPTIONS"] ein:

Auswahl Typ Vorgabe Description
python_driver String Nicht festgelegt Stellen Sie ein, um "mssql_python" dieses Alias über den mssql-python Treiber zu verbinden. Er setzt den Standardtreiber pyodbc nicht und "pyodbc" behält ihn nicht. Siehe Select the database driver for mssql-django.
driver String "ODBC Driver 18 for SQL Server" ODBC-Treiber zum Nutzen. Fällt automatisch auf Treiber 17 zurück, wenn 18 nicht installiert ist. Ignoriert auf dem mssql-python Weg.
isolation_level String None Transaktionsisolationsstufe: READ UNCOMMITTED, READ COMMITTED, , REPEATABLE READ, SNAPSHOToder SERIALIZABLE.
dsn String None Heißt DSN. Kann anstelle von HOSTverwendet werden. Ignoriert auf dem mssql-python Weg.
host_is_server Boolean False Stell es so ein, dass True es direkt mit FreeTDS verwendetHOST/PORTwird, statt mit einem freetds.conf Dataserver-Namen. Ignoriert auf dem mssql-python Weg.
unicode_results Boolean False Aktiviere die unicode_results Funktion von pyodbc. Ignoriert auf dem mssql-python Weg.
extra_params String None Zusätzliche Verbindungszeichenfolge-Parameter im Format"param=value;param=value". Wird für die Microsoft Entra-Authentifizierung verwendet. Der Pfad mssql-python validiert diese gegen eine Erlaubnisliste.
collation String None Kollation für Textfeldsuche (zum Beispiel "Chinese_PRC_CI_AS").
connection_timeout Integer 0 Verbindungszeitzeit in Sekunden (0 = deaktiviert). Verwenden Sie mindestens 60 für Azure SQL-Datenbank serverlos mit aktivierter automatischer Pause. Eine automatisch pausierte Datenbank wird beim ersten Verbindungsversuch fortgesetzt, und dieser Versuch kann mit dem Fehler 40613 fehlschlagen, während die Datenbank fortgesetzt wird, sodass die Anwendung einen neuen Versuch machen muss. Weitere Informationen finden Sie unter Auto-pause und Auto-resume.
connection_retries Integer 5 Anzahl der Verbindungsversuche.
connection_retry_backoff_time Integer 5 Rückzugszeit in Sekunden zwischen den Wiederversuchen.
query_timeout Integer 0 Abfrage-Timeout in Sekunden (0 = deaktiviert).
setencoding / setdecoding List None Die Kodierungs- und Dekodierungskonfiguration wurde an die Verbindungsmethoden des ausgewählten Treibers weitergegeben. Jeder setdecoding Eintrag benötigt auf beiden Pfaden einen sqltype Schlüssel, und derselbe Eintrag funktioniert auf beiden Treibern. mssql-python akzeptiert -99 für SQL_WMETADATA, und pyodbc lehnt es ab. Siehe die Referenz zur pyodbc-Codierung und -dekodierung .
return_rows_bulk_insert Boolean False Erlauben Sie Rückkehrreihen aus dem Bulk-Einsatz. Das muss so sein False , wenn Tabellen Trigger haben.
datefirst Integer 7 Erster Wochentag für SET DATEFIRST. 7ist Sonntag (SQL Server Standard), 1 ist Montag.
driver_needs_utf8 Nur-Präsenz-Option Nicht festgelegt Aktivieren Sie die UTF-8-Codierung für den ODBC-Treiber. Diese Option ist aktiviert, wenn der Schlüssel in OPTIONSvorhanden ist; der Wert selbst wird ignoriert. Typischerweise benötigt man bei FreeTDS oder älteren unixODBC-Konfigurationen, die standardmäßig auf Latin-1 basieren.
driver_charset String None Expliziter Zeichensatz für den ODBC-Treiber (zum Beispiel, "UTF-8"). Verwenden Sie mit driver_needs_utf8 wenn der Fahrer die Kodierung nicht automatisch erkennt.
connection_recovery_interval_msec Float 0.0 Millisekunden, um zwischen den erneuten Versuchen in der Backend-Wiederherstellungsschleife nach einem Netzwerkfehler zu warten. Erhöhe diesen Wert für instabile Netzwerkverbindungen.

Beispiel mit gängigen Optionen:

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

Backend-spezifische Einstellungen

Diese Einstellung wird auf Modulebene in settings.py, außerhalb des Wörterbuchs DATABASES , platziert:

Setting Typ Vorgabe Description
DATABASE_CONNECTION_POOLING Boolean True Auf Deaktivieren False des Treiber-Verbindungspoolings eingestellt. Gilt sowohl für als auch pyodbcmssql-python.

Beispiel:

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 driver-level connection pooling
DATABASE_CONNECTION_POOLING = False