Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
De mssql-python-driver biedt een Settings klasse die het gedrag van modules breed regelt. Deze instellingen beïnvloeden alle verbindingen en cursoroperaties. Configureer ze één keer bij het opstarten van de applicatie, voordat je verbindingen maakt.
Toegangsinstellingen
Haal het huidige Settings object op en inspecteer of wijzig de eigenschappen ervan:
import mssql_python
# Get settings object
settings = mssql_python.get_settings()
# Check current values
print(settings.lowercase)
print(settings.decimal_separator)
Beschikbare instellingen
De volgende instellingen bepalen hoe de driver gegevens teruggeeft en de resultaten formateert.
Onderkast
De lowercase-instelling bepaalt of kolomnamen in cursor.description in kleine letters worden weergegeven. Schakel deze instelling in wanneer je applicatie kolommen op naam raadpleegt en je casing-mismatches wilt voorkomen. Webframeworks zoals Flask en FastAPI zetten vaak rijen om naar woordenboeken, wat consistente behuizing belangrijk maakt:
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', ...)
| Waarde | Beschrijving |
|---|---|
False |
Verstek. Kolomnamen behouden de originele behuizing. |
True |
Kolomnamen in cursor.description worden omgezet naar kleine letters. |
Decimaalscheidingsteken
De driver biedt module-niveau functies om de decimale scheider voor numerieke conversies te bedienen. Verander deze instelling alleen als je SQL Server-instantie een locatie gebruikt met een komma als decimale scheidingsteken, zoals Franse of Duitse locaties. De meeste applicaties hoeven deze instelling niet te wijzigen:
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(",")
Voor meer informatie over decimale behandeling, zie Data type mappings.
native_uuid
De instelling native_uuid bepaalt of UNIQUEIDENTIFIER kolommen worden geretourneerd als Python-uuid.UUIDobjecten of als pyodbc-compatibele tekenreeksen in hoofdletters. Deze instelling is handig voor teams die migreren van pyodbc en afhankelijk zijn van string-UUID-waarden:
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
| Waarde | Beschrijving |
|---|---|
True |
Verstek.
UNIQUEIDENTIFIER kolommen geven objecten terug uuid.UUID . |
False |
UNIQUEIDENTIFIER kolommen geven hoofdletters terug (pyodbc-compatibel). |
Je kunt ook per verbinding het volgende instellen native_uuid :
# Override for a specific connection
conn = mssql_python.connect(connection_string, native_uuid=False)
Opmerking
De native_uuid setting werd geïntroduceerd in mssql-python versie 1.5.0.
Moduleniveau-constanten
De driver biedt alleen-leesbare DB-API 2.0-conformiteitsconstanten die de mogelijkheden aangeven. Gebruik deze constanten om code te schrijven die zich aanpast aan verschillende DB-API drivers:
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
De apilevel constante rapporteert het DB-API compliance-niveau:
| Waarde | Meaning |
|---|---|
'2.0' |
Volledige DB-API 2.0-compliance. |
Schroefdraadveiligheid
De threadsafety constante geeft het veiligheidsniveau van de draad aan:
| Waarde | Meaning |
|---|---|
0 |
Threads kunnen de module niet delen. |
1 |
Threads kunnen de module delen, maar geen verbindingen. |
2 |
Threads kunnen de module en verbindingen delen. |
3 |
Threads kunnen de module, verbindingen en cursors delen. |
De mssql-python-driver gebruikt threadsafety = 1, wat betekent:
- Je kunt de module importeren en gebruiken over threads heen.
- Elke verbinding mag telkens maar bij één thread horen.
- Maak per thread een aparte verbinding aan, of gebruik een verbindingspool (standaard ingeschakeld). Voor meer informatie, zie Connection pooling.
paramstyle
De paramstyle constante rapporteert het parameter-placeholderformaat:
| Style | Format | Voorbeeld |
|---|---|---|
'qmark' |
Vraagtekens | WHERE id = ? |
'numeric' |
Numerieke positie | WHERE id = :1 |
'named' |
Genaamd | WHERE id = :id |
'format' |
ANSI C printf | WHERE id = %s |
'pyformat' |
Python-formaat | WHERE id = %(id)s |
De mssql-python-driver gebruikt paramstyle = 'pyformat'. Gebruik altijd benoemde parameters om SQL-injectie te voorkomen. Bouw nooit queries met gebruikersinvoer via string-opmaak of f-strings:
# 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}
)
Versie-informatie
Controleer welke versie van de driver is geïnstalleerd:
import mssql_python
# Driver version
print(mssql_python.__version__) # e.g., '1.5.0'
Configureer instellingen bij het opstarten
Stel de moduleconfiguratie één keer in bij het opstarten van de applicatie, voordat je verbindingen maakt. Waarden vroegtijdig instellen voorkomt inconsistent gedrag tussen verbindingen:
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)
Veiligheidsoverwegingen voor schroefdraad
Module-instellingen zijn globaal en beïnvloeden alle verbindingen over alle threads. Als je een instelling verandert nadat de verbindingen al open zijn, kunnen bestaande verbindingen die wijziging niet consistent weerspiegelen. Stel alle configuratiewaarden in voordat je je eerste verbinding maakt:
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
Configureer instellingen voordat je verbindingen maakt. Het veranderen van instellingen nadat de connecties zijn gemaakt, kan leiden tot inconsistent gedrag.
Aansluitingsspecifieke configuratie
Je kunt sommige instellingen per verbinding overschrijven zonder de globale standaard te wijzigen. Gebruik per-connection overrides wanneer verschillende delen van je applicatie verschillend gedrag nodig hebben. Bijvoorbeeld, een rapportagemodule kan streng-UUID's nodig hebben terwijl de rest van de applicatie objecten gebruikt uuid.UUID :
# Per-connection native_uuid override
conn = mssql_python.connect(connection_string, native_uuid=False)
# Use the autocommit property
conn.autocommit = True