Válaszd ki az adatbázis drivert mssql-django számára

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.