Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
En este artículo se explica cómo migrar un proyecto de Django desde el django-mssql-backend paquete (que usó el sql_server.pyodbc motor) al mssql-django paquete.
Overview
El mssql-django paquete es el sucesor de django-mssql-backend. Proporciona un backend de base de datos Django para SQL Server con un nombre de paquete actualizado, identificador de motor y soporte para versiones más recientes de Django. La ruta del controlador pyodbc sigue siendo la predeterminada en mssql-django la versión 2.0, y cada alias de base de datos puede optar por el controlador mssql-python. Para más información, consulte Seleccionar el controlador de base de datos para mssql-django.
| Feature | django-mssql-backend | mssql-django |
|---|---|---|
| Nombre del paquete | django-mssql-backend |
mssql-django |
| MOTOR | sql_server.pyodbc |
mssql |
| Soporte técnico de Django | 2.2, 3.0, 3.1 | 5.2, 6.0, 6.1 |
| Mantenido por | Microsoft | Microsoft |
| PyPI | pip install django-mssql-backend |
pip install mssql-django |
Paso 1: Actualizar el paquete de Python
Desinstale el paquete anterior e instale el nuevo:
pip uninstall django-mssql-backend
pip install mssql-django
Si usa un requirements.txt archivo, reemplace la referencia del paquete:
# Before
django-mssql-backend>=2.8.1
# After
mssql-django>=2.0
Paso 2: Actualizar el DATABASE ENGINE
En su settings.py, cambie el valor de ENGINE de sql_server.pyodbc a mssql:
# Before
DATABASES = {
"default": {
"ENGINE": "sql_server.pyodbc",
"NAME": "<your-database>",
"USER": "<your-username>",
"PASSWORD": "<your-password>",
"HOST": "<your-server>",
"PORT": "1433",
"OPTIONS": {
"driver": "ODBC Driver 17 for SQL Server",
},
},
}
# After
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",
},
},
}
Note
La ruta pyodbc predeterminada utiliza el controlador ODBC 18 de Microsoft para SQL Server. Puedes seguir usando el Driver 17 en la ruta pyodbc especificándolo explícitamente en la driver opción. La ruta mssql-python ignora la driver opción.
Paso 3: Actualizar INSTALLED_APPS
Si INSTALLED_APPS hace referencia a sql_server, actualícela:
# Before
INSTALLED_APPS = [
"sql_server",
# ...
]
# After - only needed if using inspectdb
INSTALLED_APPS = [
"mssql",
# ...
]
Paso 4: Comprobar la configuración
Ejecute una comprobación rápida para asegurarse de que el nuevo back-end se conecta correctamente:
python manage.py check
python manage.py showmigrations
Paso 5: Ejecución del conjunto de pruebas
Ejecute el conjunto de pruebas del proyecto para comprobar que todo funciona con el nuevo back-end:
python manage.py test
Cambios importantes que se van a observar
| Area | Cambio |
|---|---|
| Controlador de base de datos por defecto |
mssql-django La versión 2.0 mantiene pyodbc como el controlador de base de datos por defecto. Para usar la ruta de mssql-python, establece "python_driver": "mssql_python" en el diccionario OPTIONS del alias. |
| Controlador ODBC predeterminado de la ruta de pyodbc | La ruta de pyodbc usa ODBC Driver 18 for SQL Server, que establece Encrypt=yes de forma predeterminada. Las conexiones a servidores con certificados autofirmados o que no son de confianza producen un error a menos que agregue TrustServerCertificate=yes a extra_params. Alternativamente, especifica el controlador 17 en la ruta pyodbc o instala un certificado de confianza en el servidor. |
return_rows_bulk_insert |
Tiene como valor predeterminado False. Establecer en True para habilitar la devolución de ID tras bulk_create. Debe permanecer en False para tablas con disparadores. Consulte Operaciones masivas con mssql-django. |