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.
A 2.0-s verziótól kezdve mssql-django a két Python adatbázis meghajtóval csatlakozik:
- pyodbc egy külsőleg telepített Microsoft ODBC Driver for SQL Serverrel. Ez az illesztőprogram az alapértelmezett.
- mssql-python, a Microsoft Python illezőprogramja, amelyhez nincs szükség külön telepített ODBC illesztőprogramra.
Minden egyes adatbázis-aliashoz te választod ki az illesztőprogramot. Egy alias használhatja a(z) mssql-python-t, miközben a projekt többi része marad a(z) pyodbc-en. Az ENGINE érték mindkét esetben megmarad "mssql" .
Alias engedélyezése az mssql-pythonhoz
Állítsd be az adott álnév OPTIONS szótárában az python_driver opciót:
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",
},
},
}
A háttérrendszer elfogadja "mssql_python", "mssql-python", és "python", és az összehasonlítás figyelmen kívül hagyja az esetet. Hagyd el a python_driver elemet, hagyd üresen, vagy állítsd "pyodbc" értékre az alapértelmezett illesztőprogram megtartásához. Mivel a beállítás alias-enként van, egyszerre egy adatbázist vissza kell fordítani az opció eltávolításával.
A mssql-python modult csak akkor importálják, ha egy alias kiválasztja. Ha a telepített verzió korábbi az 1.15.0-s verziónál, a háttérrendszer a szükséges verzióval együtt a ImproperlyConfigured elemet jelzi.
Telepítési követelmények
pip install mssql-django mindkét drivert telepíti. A mssql-python elérési út nem rendelkezik külön ODBC-illesztőprogram-telepítéssel. Egy --no-deps telepítés, vagy egy olyan privát index, amely nem tükrözi a mssql-python-t, a csomag hiányát eredményezi, és az alias importáláskor meghiúsul.
Telepítsd a platformra vonatkozó előfeltételeket az mssql-pythonhoz, beleértve az OpenSSL-t macOS-en és a szükséges könyvtárakat a Linuxon.
Mivel mssql-python kötelező függőség, mssql-django a 2.0 csak olyan platformokra telepíthető, amelyeknek kompatibilis mssql-python disztribúciójuk van. A platformlistáért lásd: mssql-django támogatás és életciklus.
Viselkedésbeli különbségek
A két meghajtó különböző kapcsolódási láncokat épít fel, és különböző kapcsolódási kulcsszavakat jelenít meg. Nézd át ezt a részt, mielőtt álnevet váltasz.
Kapcsolatbeállítások
| Setting | pyodbc | mssql-python |
|---|---|---|
HOST és PORT |
A kimenet SERVER, SERVERNAME vagy SERVER, valamint PORT, a meghajtótól és a(z) host_is_server függően. |
Mindig úgy bocsátják ki, mint SERVER=<host>,<port>. Egy üres HOST lesz localhost. |
driver |
Kiválasztja az ODBC-illesztőprogramot. Alapértelmezés szerint a Microsoft ODBC Driver 18 for SQL Servert használja, és automatikusan visszaáll a 17-es illesztőprogramra. | Figyelmen kívül hagyott. Nincs a Driver 17-hez tartalékmegoldás. |
dsn |
Támogatott. | Figyelmen kívül hagyott. |
host_is_server |
Támogatott a FreeTDS-hez. | Figyelmen kívül hagyott. |
unicode_results |
Támogatott. | Figyelmen kívül hagyott. |
TOKEN |
Támogatott. | Támogatott. Add meg a(z) TOKEN elemet USER, PASSWORD vagy Authentication kulcsszó nélkül. Az alkalmazása lekéri és megújítja a tokent. |
DATABASE_CONNECTION_POOLING |
Érvényes. | Érvényes. |
Az időtúllépések, az újrapróbálkozások, az izolációs szint, a kolláció és a return_rows_bulk_insert ugyanúgy viselkednek mindkét útvonalon.
További kapcsolódási paraméterek
mssql-python érvényesíti extra_params egy engedélyezési lista alapján, és elutasít mindent, ami azon kívül van. A támogatott kulcsszavak közé tartoznak Authentication, Encrypt, TrustServerCertificate, HostnameInCertificate, MultiSubnetFailover, ApplicationIntent, ConnectRetryCount, ServerSPN, ServerCertificate, KeepAlive, KeepAliveInterval, ConnectRetryInterval, IpAddressPreference és PacketSize.
Az illesztőprogram elutasítja a(z) DRIVER, DSN, SERVERNAME és MARS_Connection elemeket, valamint a csak pyodbc-specifikus kulcsszavakat, mint például APP, LongAsMax, ColumnEncryption, WSID, AnsiNPW, QuotedId, UseFMTONLY, Network Library, Current Language, Regional, Description és Connect Timeout. Távolítsd el ezeket a kulcsszavakat, mielőtt aliast váltasz, és használd az connection_timeout opciót a Connect Timeouthelyett.
Ha extra_params beállít egy kulcsszót, amelyet a háttérrendszer is generál, az explicit érték nyer.
Több aktív eredményhalmaz
A(z) pyodbc útvonalon a háttérrendszer hozzáadja a(z) MARS_Connection=yes elemet, ha az alias Microsoft ODBC-illesztőprogramot használ Windowson. Helyette egy explicit MARS_Connection értéket extra_params tisztelnek, és a match figyelmen kívül hagyja a case-et.
Az mssql-python út sosem engedélyezi a MARS-t, és elutasítja a MARS_Connection kulcsszót, így nem lehet bekapcsolni a MARS-t erre az álnévre.
MARS nélkül a QuerySet.iterator() a teljes eredményt memóriába olvassa, mielőtt sorokat adna vissza, hogy egy beágyazott lekérdezés újra felhasználhassa a kapcsolatot, és ezen a chunk_size sem változtat. Vegyük figyelembe a memóriaigényt nagy lekérdezéshalmazok esetén.
A MARS-t elutasító végpontok, például a Microsoft Fabric Warehouse esetén lásd: MARS letiltása.
Kódolási konfiguráció
Mindkét meghajtó elfogadja setencoding és setdecoding, és minden bejegyzés a kiválasztott illesztőprogram csatlakozási módjához kerül. Minden setdecoding bejegyzéshez mindkét útvonalon szükség van egy sqltype kulcsra, és ugyanaz a bejegyzés bármelyik illesztőprogrammal működik. Egy különbség: a mssql-python elfogadja a(z) -99 elemet pyodbc helyett, a SQL_WMETADATA pedig elutasítja.
Válasszon az illesztőprogramok közül
Új fejlesztésekhez használja a(z) mssql-python elemet. Eltávolítja az ODBC driver telepítési lépést a konténer képekből és alkalmazás-szolgáltatások telepítéséből.
Használd a(z) pyodbc elemet, ha az üzembe helyezésed elnevezett DSN-től, a FreeTDS-től, a(z) ColumnEncryption kulcsszón keresztüli Always Encrypted használatától, egy saját magad által kezelt ODBC-illesztőprogram-verziótól vagy a MARS-tól függ. Arról, mit igényel a MARS minden útvonalon, lásd: Több aktív eredményhalmaz.
A meglévő projektek maradhatnak .pyodbc Ez továbbra is alapértelmezett, és teljes mértékben támogatott. Ha mégis átállsz, egyszerre csak egy aliast válts át, és futtasd le rajta a tesztkészletedet, mielőtt a többit is átállítod.