Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
Ez a cikk a OPTIONS Django-konfiguráció DATABASES szótárbeállításait ismerteti. Ezek a beállítások meghatározzák, hogy mssql-django hogyan csatlakozik az SQL Serverhez az ODBC-illesztőprogramon keresztül.
ODBC-illesztő kiválasztása
mssql-django Az 1.7-es verziótól kezdve a háttérrendszer alapértelmezés szerint a SQL Serverhez készült ODBC Driver 18-at használja. Ha az ODBC Driver 18 nincs telepítve, a háttérrendszer automatikusan visszakerül az ODBC-illesztőprogram 17-esére.
Note
Az ODBC Driver 18 alapértelmezés szerint engedélyezi Encrypt=yes és ellenőrzi a kiszolgálótanúsítványt. A 17-es illesztőprogrammal korábban működő kapcsolatok SSL/TLS-megbízhatósági hiba miatt meghiúsulhatnak. A hiba megoldása:
- Helyszíni SQL Server esetén telepítsen egy kiszolgálótanúsítványt egy olyan hitelesítésszolgáltatótól, amelybe az ügyfelek már megbíznak, vagy importálja a meglévő kiszolgálótanúsítványt minden ügyfélmegbízhatósági tárolóba. Útmutatásért lásd: SQL Server adatbázismotor konfigurálása a kapcsolatok titkosításához.
- Ha olyan IP-címmel vagy álnévvel csatlakozik, amely nem egyezik a tanúsítvány tulajdonosnevével vagy alternatív tulajdonosnevével (SAN), adja hozzá a(z)
HostNameInCertificate=<name-from-certificate>elemet a következőhöz:extra_params.
Ha önaláírt tanúsítvánnyal végez helyi fejlesztést, lásd a(z) Extra ODBC-paraméterek című rész TrustServerCertificate elemét.
Az illesztőprogramot explicit módon is megadhatja:
DATABASES = {
"default": {
"ENGINE": "mssql",
"NAME": "<your-database>",
"USER": "<your-username>",
"PASSWORD": "<your-password>",
"HOST": "<your-server>",
"PORT": "1433",
"OPTIONS": {
"driver": "ODBC Driver 17 for SQL Server",
},
},
}
Linuxon megadhatja az illesztőprogram-kódtár teljes elérési útját is:
DATABASES = {
"default": {
"ENGINE": "mssql",
"NAME": "<your-database>",
"USER": "<your-username>",
"PASSWORD": "<your-password>",
"HOST": "<your-server>",
"PORT": "1433",
"OPTIONS": {
"driver": "/opt/microsoft/msodbcsql18/lib64/libmsodbcsql-18.0.so.1.1",
},
},
}
DSN és HOST
A csatlakozáshoz használhat egy HOST nevet vagy egy nevesített DSN-t (adatforrás neve).
Kapcsolódás a HOST-hoz
A legtöbb konfiguráció közvetlenül használja a HOST beállítást:
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",
},
},
}
Csatlakozás a DSN-hez
Használja az ODBC-adatforrásokban konfigurált nevesített DSN-t:
DATABASES = {
"default": {
"ENGINE": "mssql",
"NAME": "<your-database>",
"USER": "<your-username>",
"PASSWORD": "<your-password>",
"OPTIONS": {
"dsn": "MyDataSourceName",
},
},
}
FreeTDS-támogatás
A FreeTDS ODBC-illesztőprogramként való használatához állítsa a(z) host_is_server értékét True értékre. Ez arra utasítja a háttérrendszert, hogy közvetlenül a(z) HOST és PORT elemeket használja ahelyett, hogy a(z) freetds.conf elemben keresné ki az adatkiszolgáló nevét:
DATABASES = {
"default": {
"ENGINE": "mssql",
"NAME": "<your-database>",
"USER": "<your-username>",
"PASSWORD": "<your-password>",
"HOST": "<your-server>",
"PORT": "1433",
"OPTIONS": {
"driver": "FreeTDS",
"host_is_server": True,
},
},
}
A FreeTDS-sel létesített DSN-nélküli kapcsolatokról további információt a FreeTDS felhasználói útmutatójában talál.
További ODBC-paraméterek
További ODBC-kapcsolati karakterlánc paraméterek átadására használhatóextra_params. Az érték egy pontosvesszővel tagolt karakterlánc, amely a kapcsolati karakterlánchoz van hozzáfűzve:
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": "TrustServerCertificate=yes;ApplicationIntent=ReadOnly",
},
},
}
Ez a beállítás Microsoft Entra hitelesítési kulcsszavakhoz is használható.
Caution
Csak helyi fejlesztéshez használható TrustServerCertificate=yes önaláírt tanúsítványokkal. Ne használja éles környezetben. Letiltja a tanúsítványlánc érvényesítését, és növeli a középen belüli támadói kockázatot. Telepítsen egy megbízható tanúsítványt a kiszolgálón, és csatlakozzon a kiszolgálóhoz TrustServerCertificate=no.
Kapcsolati időtúllépések és újrapróbálkozások
Konfigurálja a kapcsolat rugalmasságát időtúllépési és újrapróbálkozási beállításokkal:
| Option | Alapértelmezett | Leírás |
|---|---|---|
connection_timeout |
0 (letiltva) |
A kapcsolatra való várakozás maximális másodperce. |
connection_retries |
5 |
A csatlakozási hiba újrapróbálkozási kísérleteinek száma. |
connection_retry_backoff_time |
5 |
Várakozási idő az újrapróbálkozási kísérletek között. |
query_timeout |
0 (letiltva) |
A lekérdezés befejezésére váró maximális másodperc. |
Example:
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",
"connection_timeout": 30,
"connection_retries": 3,
"connection_retry_backoff_time": 10,
"query_timeout": 120,
},
},
}
Collation
Egyéni rendezés beállítása szövegmező-keresésekhez:
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",
"collation": "Chinese_PRC_CI_AS",
},
},
}
Több adatbázis-kapcsolat
A Django támogatja a több adatbázishoz való egyidejű csatlakozást. Ez hasznos olvasási replikákhoz, adatbázisközi lekérdezésekhez vagy a számítási feladatok elkülönítési szint szerinti elválasztásához.
Több adatbázis konfigurálása
Adja meg az egyes kapcsolatokat a DATABASES beállításban:
DATABASES = {
"default": {
"ENGINE": "mssql",
"NAME": "app_db",
"HOST": "<your-primary-server>",
"PORT": "1433",
"OPTIONS": {
"driver": "ODBC Driver 18 for SQL Server",
},
},
"readonly": {
"ENGINE": "mssql",
"NAME": "app_db",
"HOST": "<your-readonly-replica>",
"PORT": "1433",
"OPTIONS": {
"driver": "ODBC Driver 18 for SQL Server",
"extra_params": "Encrypt=yes;ApplicationIntent=ReadOnly",
},
},
"analytics": {
"ENGINE": "mssql",
"NAME": "analytics_db",
"HOST": "<your-analytics-server>",
"PORT": "1433",
"OPTIONS": {
"driver": "ODBC Driver 18 for SQL Server",
"isolation_level": "READ UNCOMMITTED",
},
},
}
Caution
READ UNCOMMITTED lehetővé teszi a piszkos olvasást. Ezt az elkülönítési szintet csak olyan jelentéskészítési vagy elemzési lekérdezésekhez használja, ahol nincs szükség abszolút pontosságra. További információ: Tranzakciókezelés.
Lekérdezések átirányítása adatbázis-útválasztóval
Hozzon létre egy adatbázis-útválasztót az olvasási és írási műveletek megfelelő kapcsolathoz való irányításához:
class ReadReplicaRouter:
"""Route read queries to the readonly replica, writes to the primary."""
def db_for_read(self, model, **hints):
return "readonly"
def db_for_write(self, model, **hints):
return "default"
def allow_relation(self, obj1, obj2, **hints):
return True
def allow_migrate(self, db, app_label, model_name=None, **hints):
return db == "default"
Regisztrálja az útválasztót a következő helyen settings.py:
DATABASE_ROUTERS = ["myproject.routers.ReadReplicaRouter"]
Mentse az útválasztó osztályt egy fájlba, például myproject/routers.py.
Adott adatbázis közvetlen lekérdezése
using() A metódussal lekérdezhet egy adott adatbázis-aliast:
# Explicit read from analytics database
reports = AnalyticsReport.objects.using("analytics").filter(date__gte="2025-01-01")
# Write to default
Product.objects.create(name="Widget", price=9.99)
A kapcsolatonkénti adatbázisok elkülönítési szintjeiről további információt az Adatok blokkolás nélküli olvasása című témakörben talál.
Kapcsolódó tartalom
- mssql-django konfigurációs referencia
- Microsoft Entra hitelesítés mssql-django használatával
- Újrapróbálkozási logika és kapcsolati rugalmasság az mssql-django használatával
- Ajánlott biztonsági eljárások az mssql-django használatához
- Kapcsolatkészletezés az mssql-django-ban
- Az mssql-django hibaelhárítása