Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
O driver mssql-python fornece uma Settings classe que controla o comportamento em todo o módulo. Essas configurações afetam todas as conexões e operações do cursor. Configure-as uma vez na inicialização do aplicativo, antes de criar qualquer conexão.
Configurações de acesso
Recupere o objeto atual Settings e inspecione ou modifique suas propriedades:
import mssql_python
# Get settings object
settings = mssql_python.get_settings()
# Check current values
print(settings.lowercase)
print(settings.decimal_separator)
Configurações disponíveis
As configurações a seguir controlam como o driver retorna os dados e formata os resultados.
em minúsculas
A lowercase configuração determina se os nomes das colunas em cursor.description aparecem em minúsculas. Ative esta configuração quando sua aplicação acessa colunas por nome e você quer evitar incompatibilidades entre maiúsculas e minúsculas. Frameworks da web, como Flask e FastAPI, frequentemente convertem linhas em dicionários, o que torna importante a consistência na capitalização:
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', ...)
| Valor | Descrição |
|---|---|
False |
Padrão. Os nomes das colunas preservam a carcaça original. |
True |
Os nomes das colunas em cursor.description são convertidos para minúsculas. |
Separador decimal
O driver fornece funções em nível de módulo para controlar o separador decimal para conversões numéricas. Mude essa configuração somente se sua instância do SQL Server usar um local com vírgula como separador decimal, como locais franceses ou alemães. A maioria das aplicações não precisa alterar essa configuração:
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(",")
Para mais informações sobre manuseio decimal, veja Mapeamentos de tipos de dados.
native_uuid
A configuração native_uuid controla se as colunas UNIQUEIDENTIFIER são retornadas como objetos Python uuid.UUID ou como strings em maiúsculas compatíveis com pyodbc. Essa configuração é útil para equipes que estão migrando do pyodbc e dependem de valores de UUID em formato de string:
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
| Valor | Descrição |
|---|---|
True |
Padrão.
UNIQUEIDENTIFIER colunas retornam uuid.UUID objetos. |
False |
UNIQUEIDENTIFIER As colunas retornam strings em maiúsculas (compatíveis com pyodbc). |
Você também pode definir native_uuid por conexão:
# Override for a specific connection
conn = mssql_python.connect(connection_string, native_uuid=False)
Note
A native_uuid configuração foi introduzida na versão 1.5.0 do mssql-python.
Constantes em nível de módulo
O driver expõe constantes de conformidade com a DB-API 2.0 que são apenas leitura e descrevem suas capacidades. Use essas constantes para escrever código que se adapta a diferentes drivers DB-API:
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 constante apilevel informa o nível de conformidade com a DB-API:
| Valor | Meaning |
|---|---|
'2.0' |
Conformidade total com a DB-API 2.0. |
Segurança da rosca
A constante threadsafety informa o nível de segurança de thread:
| Valor | Meaning |
|---|---|
0 |
Threads não podem compartilhar o módulo. |
1 |
Threads podem compartilhar o módulo, mas não as conexões. |
2 |
Threads podem compartilhar o módulo e as conexões. |
3 |
Threads podem compartilhar o módulo, as conexões e os cursores. |
O driver mssql-python usa threadsafety = 1, o que significa:
- Você pode importar e usar o módulo entre threads.
- Cada conexão deve estar associada a somente uma thread por vez.
- Crie uma conexão separada por thread, ou use um pool de conexões (ativado por padrão). Para mais informações, veja Agrupamento de conexões.
paramstyle
A paramstyle constante reporta o formato do parâmetro provisório:
| Style | Format | Example |
|---|---|---|
'qmark' |
Pontos de interrogação | WHERE id = ? |
'numeric' |
Posição numérica | WHERE id = :1 |
'named' |
nomeado | WHERE id = :id |
'format' |
ANSI C printf | WHERE id = %s |
'pyformat' |
Formato Python | WHERE id = %(id)s |
O driver mssql-python usa paramstyle = 'pyformat'. Sempre use parâmetros nomeados para evitar a injeção de SQL. Nunca crie consultas usando dados fornecidos pelo usuário por meio de formatação de strings ou 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}
)
Informações da versão
Verifique qual versão do driver está instalada:
import mssql_python
# Driver version
print(mssql_python.__version__) # e.g., '1.5.0'
Configurar configurações na inicialização
Defina a configuração do módulo uma vez na inicialização do aplicativo, antes de criar qualquer conexão. Definir valores cedo previne comportamentos inconsistentes entre conexões:
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)
Considerações sobre a segurança da rosca
As configurações do módulo são globais e afetam todas as conexões entre todos os threads. Se você mudar uma configuração depois que as conexões já estão abertas, as conexões existentes podem não refletir a mudança de forma consistente. Defina todos os valores de configuração antes de criar sua primeira conexão:
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()
Importante
Configure as configurações antes de criar conexões. Mudar as configurações após a criação das conexões pode levar a comportamentos inconsistentes.
Configuração específica de conexão
Você pode sobrescrever algumas configurações por conexão sem mudar o padrão global. Use substituições por conexão quando diferentes partes da sua aplicação precisarem de comportamento diferente. Por exemplo, um módulo de relatório pode precisar de UUIDs de string enquanto o restante da aplicação usa uuid.UUID objetos:
# Per-connection native_uuid override
conn = mssql_python.connect(connection_string, native_uuid=False)
# Use the autocommit property
conn.autocommit = True