Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Od verze 2.0 se připojuje mssql-django přes jeden ze dvou ovladačů Python databáze:
- pyodbc s externě nainstalovaným Microsoft ODBC ovladačem pro SQL Server. Tento ovladač je výchozí.
- mssql-python, Microsoft Python ovladač, který nevyžaduje samostatně nainstalovaný ODBC ovladač.
Ovladač pro každý alias databáze si vyberete. Jeden alias lze použít mssql-python , zatímco zbytek projektu zůstává aktivní pyodbc. Hodnota ENGINE zůstává v "mssql" obou případech.
Přihlásit alias do mssql-python
Nastavte možnost python_driver ve slovníku OPTIONS daného aliasu:
DATABASES = {
"default": {
"ENGINE": "mssql",
"NAME": "<database>",
"USER": "<user_id>",
"PASSWORD": "<password>",
"HOST": "<server>.database.windows.net",
"PORT": "1433",
"OPTIONS": {
"python_driver": "mssql_python",
"extra_params": "Encrypt=yes",
},
},
}
Backend přijímá "mssql_python", "mssql-python", a "python", a porovnání případ ignoruje. Vynechej python_driver, nech ho prázdný, nebo nastav tak, "pyodbc" aby si zachoval výchozí ovladač. Protože se toto nastavení určuje pro každý alias zvlášť, vrátíte změnu vždy jen u jedné databáze odebráním této volby.
Modul mssql-python se importuje pouze tehdy, když jej vybere alias. Pokud je nainstalovaná verze starší než 1.15.0, backend vyvolá ImproperlyConfigured s uvedením požadované verze.
Požadavky na instalaci
pip install mssql-django Nainstaluje oba ovladače. Cesta mssql-python nemá samostatnou instalaci ovladačů ODBC. Instalace pomocí --no-deps nebo soukromý index, který nezrcadlí mssql-python, způsobí, že balíček bude chybět a alias při importu selže.
Nainstalujte předpoklady platformy pro mssql-python, včetně OpenSSL na macOS a požadovaných knihoven na Linuxu.
Protože mssql-python je to povinná závislost, verze 2.0 se instaluje pouze na platformách, mssql-django které mají kompatibilní mssql-python distribuci. Pro seznam platforem viz podpora mssql-django a životní cyklus.
Rozdíly v chování
Oba ovladače vytvářejí různé spojovací řetězce a zobrazují různá klíčová slova spojení. Prostudujte si tuto část, než změníte alias.
Nastavení připojení
| Setting | pyodbc | mssql-python |
|---|---|---|
HOST a PORT |
Vysíláno jako SERVER, SERVER nebo PORT plus host_is_server, v závislosti na ovladači a SERVERNAME. |
Vždy vyzařováno jako SERVER=<host>,<port>. Prázdné HOST se změní na localhost. |
driver |
Vybere ovladač ODBC. Výchozí nastavení je Microsoft ODBC Driver 18 pro SQL Server, s automatickou záložní verzí ovladače 17. | Ignorovaný. Neexistuje žádná záložní varianta Driver 17. |
dsn |
Podporováno. | Ignorovaný. |
host_is_server |
Podporováno pro FreeTDS. | Ignorovaný. |
unicode_results |
Podporováno. | Ignorovaný. |
TOKEN |
Podporováno. | Podporováno. Zadejte TOKEN bez USER, PASSWORD nebo klíčového slova Authentication. Vaše aplikace získává a obnovuje token. |
DATABASE_CONNECTION_POOLING |
Platí. | Platí. |
Časové limity, opakované pokusy, úroveň izolace, kolace a return_rows_bulk_insert se na obou cestách chovají stejně.
Parametry dodatečného spojení
mssql-python 1.15 ověřuje extra_params podle seznamu povolených a odmítá vše mimo něj. Podporovaná klíčová slova zahrnují Authentication, Encrypt, TrustServerCertificate, HostnameInCertificate, ServerCertificate, ServerSPN, ConnectRetryInterval, ApplicationIntent, MultiSubnetFailover, KeepAlive, KeepAliveInterval, ConnectRetryCount, IpAddressPreference a PacketSize.
Ovladač odmítá MARS_Connection, APP, LongAsMax a ColumnEncryption a také klíčová slova pouze pro pyodbc, jako jsou WSID, AnsiNPW, QuotedId, UseFMTONLY, Network Library, Description, Regional, Current Language, Connect Timeout, SERVERNAME, DSN a DRIVER. Odstraňte tato klíčová slova před změnou aliasu a použijte connection_timeout možnost místo .Connect Timeout
Když nastavíte extra_params klíčové slovo, které generuje i backend, vyhrává explicitní hodnota.
Více aktivních sad výsledků
V cestě pyodbc backend přidává MARS_Connection=yes, pokud alias používá ovladač Microsoft ODBC v systému Windows. Místo toho je respektována explicitní MARS_Connection hodnota v a extra_params shoda ignoruje případ.
Cesta mssql-python nikdy neaktivuje MARS a odmítá MARS_Connection klíčové slovo, takže pro tento alias nemůžete zapnout MARS.
Bez MARS se QuerySet.iterator() načte celý výsledek do paměti před tím, než se zobrazí řádky, takže vnořený dotaz může spojení znovu použít, a chunk_size tím se nic nemění. Zohledněte náklady na paměť u velkých querysetů.
Pro koncové body, které odmítají MARS, jako je Microsoft Fabric Warehouse, viz Disable MARS.
Konfigurace kódování
Oba ovladače přijímají setencoding a setdecoding, a každý záznam vede k metodě připojení vybraného ovladače. Každý setdecoding vstup vyžaduje sqltype klíč na obou cestách a stejný vstup funguje na obou ovladačích. Jeden rozdíl: mssql-python přijímá -99 pro SQL_WMETADATA, a pyodbc odmítá to.
Vyberte mezi ovladači
Pro nový vývoj použijte mssql-python. Odstraňuje krok instalace ovladače ODBC z obrazů kontejnerů a nasazení aplikačních služeb.
Použijte pyodbc, když vaše nasazení závisí na pojmenovaném DSN, FreeTDS, Always Encrypted prostřednictvím klíčového slova ColumnEncryption, verzi ovladače ODBC, kterou spravujete sami, nebo MARS. Pro to, co MARS vyžaduje na každé cestě, viz Více aktivních sad výsledků.
Stávající projekty mohou zůstat aktivní pyodbc. Zůstává výchozí a plně podporovaný. Až budete migrovat, přepínejte aliasy vždy po jednom a před přesunutím ostatních na něm spusťte sadu testů.