Foire aux questions mssql-django

Cet article répond aux questions fréquemment posées sur le mssql-django serveur principal Django pour SQL Server, Azure SQL Database, Azure SQL Managed Instance et la base de données SQL dans Microsoft Fabric.

General

Qu’est-ce que mssql-django ?

Le mssql-django package est un serveur principal de base de données Django géré Microsoft pour SQL Server. Il permet aux applications Django de se connecter à SQL Server, Azure SQL Database, Azure SQL Managed Instance et SQL Database dans Microsoft Fabric. La version 2.0 et les versions ultérieures se connectent soit via le pyodbc pilote, qui est le pilote par défaut, soit via le pilote de mssql-python Microsoft.

Installez-le avec pip :

pip install mssql-django

Quelles versions de Django prend-elle en charge mssql-django ?

La mssql-django version 2.0 du package prend en charge Django 5.2, 6.0 et 6.1. Les projets sur Django 3.2 à 5.1 restent sur la version 1.8.0. Vérifiez le cycle de vie de prise en charge pour consulter la matrice de compatibilité complète.

Quelles sont les versions de Python prises en charge ?

La version 2.0 du mssql-django package prend en charge Python 3.10 à 3.14. La version spécifique de Python doit également être compatible avec votre version Django : Django 5.2 est testé avec Python 3.10 à 3.13, et Django 6.0 et 6.1 sont testés avec Python 3.12 à 3.14. Consultez le cycle de vie de support pour obtenir la matrice de compatibilité complète.

Quel pilote de base de données Python utilise mssql-django ?

La version 2.0 et les versions ultérieures prennent en charge deux pilotes, sélectionnés pour chaque alias de base de données. pyodbcest par défaut et nécessite un pilote Microsoft ODBC installé externement pour SQL Server. Pour utiliser à la place le pilote Microsoft mssql-python, qui ne nécessite pas l’installation séparée d’un pilote ODBC, ajoutez python_driver au dictionnaire OPTIONS de cet alias :

"OPTIONS": {
    "python_driver": "mssql_python",
},

Les alias qui omettent l’option continuent d’utiliser pyodbc. Pour les différences de comportement entre les deux chemins, voir Sélectionner le pilote de base de données pour mssql-django.

Mssql-django est-il géré par Microsoft ?

Yes. Le mssql-django package est géré par Microsoft et est disponible sur PyPI et GitHub.

Paramétrage

Quelle valeur ENGINE utiliser dans settings.py ?

Défini ENGINE sur "mssql" dans votre DATABASES configuration :

DATABASES = {
    "default": {
        "ENGINE": "mssql",
        "NAME": "<your-database>",
        "HOST": "<your-server>",
    },
}

Quel pilote ODBC dois-je utiliser ?

Sur le chemin d’accès pyodbc par défaut, utilisez le pilote ODBC 18 de Microsoft pour SQL Server. C’est le code par défaut, et le backend revient automatiquement au pilote ODBC 17 si la version 18 n’est pas installée. Spécifiez explicitement le pilote dans le dictionnaire OPTIONS uniquement si vous devez figer une version spécifique, ce qui désactive également le mécanisme de secours :

"OPTIONS": {
    "driver": "ODBC Driver 18 for SQL Server",
},

Le chemin mssql-python ignore l’option driver et utilise ODBC Driver 18 que pip installe avec celui-ci.

Comment me connecter à Azure SQL Database ?

Utilisez le nom complet du serveur avec le port 1433 :

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

Comment utiliser l’authentification Microsoft Entra ?

Utiliser extra_params dans OPTIONS ou le paramètre TOKEN. Le TOKEN paramètre fonctionne avec toutes azure.identity les informations d’identification, y compris DefaultAzureCredential et ManagedIdentityCredential.

from azure.identity import DefaultAzureCredential

credential = DefaultAzureCredential()
token = credential.get_token("https://database.windows.net/.default").token

"TOKEN": token,

Consultez Microsoft Entra’authentification pour toutes les méthodes prises en charge.

Fonctionnalités

Mssql-django prend-il en charge JSONField ?

Oui, JSONField est pris en charge sur SQL Server 2016 et versions ultérieures. Les données JSON sont stockées en tant que nvarchar(max) et interrogées à l'aide des fonctions JSON de SQL Server. Consultez la prise en charge de JSONField pour connaître les types de requêtes pris en charge et les limitations.

Mssql-django prend-il en charge les valeurs datetime tenant compte du fuseau horaire ?

Yes. QuandUSE_TZ=True, Django utilise le type de données datetimeoffset dans SQL Server. Si vous migrez une base de données existante, vous devez modifier les colonnes datetime2 existantes. Consultez la prise en charge des fuseaux horaires.

Puis-je appeler des procédures stockées ?

Yes. Utilisez connection.cursor() avec cursor.execute() pour appeler des procédures stockées. Consultez les procédures stockées pour obtenir des exemples, notamment plusieurs paramètres et jeux de résultats.

Bulk_create renvoie-t-il des ID ?

Par défaut, non. L’option return_rows_bulk_insert a la Falsevaleur par défaut . Définissez-la sur True dans votre base de données OPTIONS pour permettre le renvoi des ID après une insertion en bloc. Cette option doit rester False pour les tables avec des déclencheurs. Consultez les opérations groupées.

Troubleshooting

J'obtiens le message « Pilote ODBC introuvable. » Comment y remédier ?

Installez le pilote ODBC Microsoft pour SQL Server. Sur Linux, ajoutez d’abord le référentiel APT Microsoft, puis installez le pilote :

curl -fsSL https://packages.microsoft.com/keys/microsoft.asc | sudo gpg --dearmor -o /usr/share/keyrings/microsoft-prod.gpg
curl -fsSL https://packages.microsoft.com/config/ubuntu/$(lsb_release -rs)/prod.list | sudo tee /etc/apt/sources.list.d/mssql-release.list
sudo apt-get update
ACCEPT_EULA=Y sudo apt-get install -y msodbcsql18

Sur Windows, téléchargez le programme d’installation à partir du site web Microsoft. Sur macOS, utilisez Homebrew :

brew tap microsoft/mssql-release https://github.com/Microsoft/homebrew-mssql-release
brew update
HOMEBREW_ACCEPT_EULA=Y brew install msodbcsql18

Consultez Installation pour obtenir des instructions complètes spécifiques à la plateforme.

Pourquoi ma migration échoue-t-elle avec « Impossible de modifier IDENTITY la colonne » ?

SQL Server ne prend pas en charge la modification d'une colonne vers ou à partir d'une IDENTITY colonne (AutoField). Créez un modèle avec le type de champ souhaité et migrez les données manuellement. Consultez limitations et fonctionnalités non prises en charge dans mssql-django.

Pourquoi bulk_update échoue-t-il avec des champs nullables ?

Le backend gère automatiquement les mises à jour dont toutes les valeurs sont NULL. Si vous devez contrôler la valeur de l’espace réservé, utilisez le paramètre default dans bulk_update, ce qui évite d’utiliser NULL dans les expressions CASE WHEN ... THEN NULL qui provoquent des erreurs d’inférence de type dans SQL Server :

Product.objects.bulk_update(products, ["description"], default="")

Pour plus d’informations, consultez les opérations en bloc .