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.
Az mssql-python illesztőprogram egy Settings olyan osztályt biztosít, amely a modul szintű viselkedését szabályozza. Ezek a beállítások minden kapcsolatot és kurzor műveletet érintenek. Konfiguráld őket már az alkalmazás indításkor, mielőtt bármilyen kapcsolatot létrehoznál.
Hozzáférési beállítások
A jelenlegi Settings objektum lekérése, és tulajdonságai ellenőrzése vagy módosítása:
import mssql_python
# Get settings object
settings = mssql_python.get_settings()
# Check current values
print(settings.lowercase)
print(settings.decimal_separator)
Elérhető beállítások
A következő beállítások szabályozzák, hogyan ad vissza az illesztőprogram adatokat, és hogyan formázza az eredményeket.
kisbetűs
A lowercase beállítás szabályozza, hogy az oszlopnevek cursor.description kisbetűkkel jelennek meg. Kapcsold be ezt a beállítást, amikor az alkalmazás név szerint hozzáfér oszlopokhoz, és el akarod kerülni a burkolatok eltéréseit. Webes keretrendszerek, mint a Flask és a FastAPI, gyakran alakítják át a sorokat szótárokká, ami fontossá teszi a következetes betűbetűzést:
settings = mssql_python.get_settings()
# Enable lowercase column names (default: False)
settings.lowercase = True
# Column names in cursor.description are now lowercased:
# ('productid', ...) instead of ('ProductID', ...)
| Érték | Leírás |
|---|---|
False |
Alapértelmezett. Az oszlopnevek megőrzik az eredeti burkolatot. |
True |
A(z) cursor.description oszlopnevei kisbetűssé alakulnak. |
Tizedeselválasztó
Az illesztőprogram modulszintű funkciókat biztosít a tizedeselválasztó vezérléséhez numerikus átalakításokhoz. Ezt a beállítást csak akkor változtatd meg, ha az SQL Server példányod egy tizedes elválasztóként vesszóval rendelkező helyet használ, például francia vagy német helyszíneken. A legtöbb alkalmazásnak nem kell ezt a beállítást megváltoztatnia:
import mssql_python
# Get current separator
sep = mssql_python.getDecimalSeparator()
print(f"Current separator: {sep}") # Usually "."
# Set custom separator (for locales using comma)
mssql_python.setDecimalSeparator(",")
További információért a tizedes kezelésről lásd: Data type mappings.
native_uuid
Ez a native_uuid beállítás szabályozza, hogy UNIQUEIDENTIFIER az oszlopok Python uuid.UUID objektumként vagy pyodbc-kompatibilis nagybetűs stringként kerülnek-e vissza. Ez a beállítás hasznos azoknak a csapatoknak, akik a pyodbc-ről migrálnak, és a string UUID értékeitől függenek:
settings = mssql_python.get_settings()
# Return UUIDs as uuid.UUID objects (default: True)
settings.native_uuid = True
# Return UUIDs as uppercase strings (pyodbc-compatible)
settings.native_uuid = False
| Érték | Leírás |
|---|---|
True |
Alapértelmezett.
UNIQUEIDENTIFIER az oszlopok objektumokat adnak vissza uuid.UUID . |
False |
UNIQUEIDENTIFIER Az oszlopok nagybetűs stringeket adnak vissza (PyoDBC-kompatibilis). |
Kapcsolatonként is beállíthatod native_uuid :
# Override for a specific connection
conn = mssql_python.connect(connection_string, native_uuid=False)
Megjegyzés:
A native_uuid beállítást az mssql-python 1.5.0 verzióban vezették be.
Modul-szintű állandók
Az illezőgép csak olvasható DB-API 2.0 megfelelőségi konstansokat jelenít meg, amelyek leírják a képességeit. Ezeket a konstansokat használjuk olyan kód írására, amely alkalmazkodik különböző DB-API illesztőszerekhez:
import mssql_python
# DB-API 2.0 compliance level
print(mssql_python.apilevel) # '2.0'
# Thread safety level
print(mssql_python.threadsafety) # 1
# Parameter style
print(mssql_python.paramstyle) # 'pyformat'
Apilevel
A apilevel konstans a DB-API-kompatibilitási szintet jelzi:
| Érték | Meaning |
|---|---|
'2.0' |
Teljes DB-API 2.0 megfelelés. |
szálbiztonság
A threadsafety konstans a szál biztonsági szintjét jelzi:
| Érték | Meaning |
|---|---|
0 |
A szálak nem oszthatják meg a modult. |
1 |
A szálak megoszthatják a modult, de a kapcsolatokat nem. |
2 |
A szálak megoszthatják a modult és a kapcsolatokat. |
3 |
A szálak megoszthatják a modult, a csatlakozásokat és a kurzorokat. |
Az mssql-python illesztőprogram a(z) threadsafety = 1 elemet használja, ami a következőt jelenti:
- A modult importálhatod és használhatod szálakon keresztül.
- Minden kapcsolatnak egyszerre csak egy szálhoz kell tartoznia.
- Hozz létre egy szálonként külön kapcsolatot, vagy használj egy kapcsolati medót (alapértelmezettségben engedélyezve). További információkért lásd a Kapcsolatcsoportosítás című részt.
paramstyle
A paramstyle konstans a paraméter helykitöltő formátumát jelenti:
| Style | Format | Example |
|---|---|---|
'qmark' |
Kérdőjelek | WHERE id = ? |
'numeric' |
Numerikus pozíció | WHERE id = :1 |
'named' |
Nevű | WHERE id = :id |
'format' |
ANSI C printf | WHERE id = %s |
'pyformat' |
Python formátum | WHERE id = %(id)s |
Az mssql-python illesztőprogram a(z) paramstyle = 'pyformat' használja. Mindig használj névsoros paramétereket az SQL injekciójának megakadályozására. Soha ne építs lekérdezéseket felhasználói bemenettel stringformázáson vagy f-stringek segítségével:
# Use named parameters with %(name)s syntax
cursor.execute(
"SELECT * FROM Production.Product WHERE ProductSubcategoryID = %(cat)s AND ListPrice > %(price)s",
{"cat": 5, "price": 10.00}
)
Verzióinformációk
Ellenőrizd, melyik illesztőprogram-verzió van telepítve:
import mssql_python
# Driver version
print(mssql_python.__version__) # e.g., '1.5.0'
Beállítások beállítása indításkor
Állítsd be a modul konfigurációját egyszer az alkalmazás indításánál, mielőtt bármilyen kapcsolatot létrehoznál. Az értékek korai beállítása megakadályozza az összefüggéstelen viselkedést a kapcsolatok között:
import mssql_python
def configure_driver():
"""Configure mssql-python settings for this application."""
settings = mssql_python.get_settings()
# Use lowercase column names in cursor.description
settings.lowercase = True
# Call at application startup
configure_driver()
# All subsequent connections use these settings
conn = mssql_python.connect(connection_string)
Menetbiztonsági szempontok
A modul beállításai globálisak, és minden kapcsolatot érintenek minden szál között. Ha a kapcsolatok már megnyitása után változtatsz beállítást, a meglévő kapcsolatok nem feltétlenül tükrözik következetesen a változást. Állítsd be az összes konfigurációs értéket, mielőtt létrehozod az első kapcsolatot:
import mssql_python
import threading
# Settings changes affect all threads
settings = mssql_python.get_settings()
settings.lowercase = True # Affects all connections in all threads
def worker():
# This connection uses the global settings
conn = mssql_python.connect(connection_string)
cursor = conn.cursor()
cursor.execute("SELECT Name FROM Production.Product")
row = cursor.fetchone()
print(cursor.description[0][0]) # 'name' due to global setting
threads = [threading.Thread(target=worker) for _ in range(5)]
for t in threads:
t.start()
for t in threads:
t.join()
Important
Beállításokat konfigurálj a kapcsolat létrehozása előtt. A beállítások megváltoztatása a kapcsolatok létrehozása után következetlen viselkedéshez vezethet.
Kapcsolat-specifikus konfiguráció
Néhány beállítást felülírhatsz minden kapcsolat szerint anélkül, hogy megváltoztatod a globális alapértelmezet. Használj kapcsolatonkénti felülbírálásokat, ha az alkalmazás különböző részein eltérő viselkedésre van szükség. Például egy jelentésmodulnak lehet string UUID-jei szüksége, miközben az alkalmazás többi része objektumokat használ uuid.UUID :
# Per-connection native_uuid override
conn = mssql_python.connect(connection_string, native_uuid=False)
# Use the autocommit property
conn.autocommit = True