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.
Neste início rápido, você usará uv para gerenciar dependências de projeto e ambientes para um script Python que se conecta a um banco de dados que você criou e carregou com dados de exemplo. Use o mssql-python driver do Python para se conectar ao banco de dados e executar operações básicas, como ler e gravar dados.
O mssql-python driver não requer nenhuma dependência externa em computadores Windows. O driver instala tudo o que precisa com uma única pip instalação, permitindo que você use a versão mais recente do driver para novos scripts sem quebrar outros scripts que você não tem tempo para atualizar e testar.
Pré-requisitos
Python 3.10 ou posterior
Se você ainda não tiver o Python, instale o runtime do Python e o gerenciador de pacotes pip de python.org.
Não quer usar seu próprio ambiente? Siga as instruções em Contêiner e desenvolvimento local para criar um ambiente devcontainer reproduzível ou um ambiente do GitHub Codespaces.
Visual Studio Code com as seguintes extensões:
CLI (Interface Command-Line) do Azure para autenticação sem senha no macOS e linux.
Se você ainda não tiver
uv, siga as instruções de instalação.Um banco de dados no SQL Server, no Banco de Dados SQL do Azure ou no Banco de Dados SQL no Fabric com o
AdventureWorks2025esquema de exemplo e uma cadeia de conexão válida.
Instale pré-requisitos específicos do sistema operacional uma vez. Usuários do Windows podem pular essa etapa. Para detalhes completos da plataforma, veja Instalar mssql-python.
Criar um banco de dados SQL
Crie ou conecte-se a um banco de dados SQL em uma das seguintes plataformas:
Criar o projeto e executar o código
- Criar um novo projeto
- Adicionar dependências
- Iniciar Visual Studio Code
- Atualizar pyproject.toml
- Atualizar main.py
- Salvar a cadeia de conexão
- Use o comando uv run para executar o script
Criar um novo projeto
Abra um prompt de comando no diretório de desenvolvimento. Se você não tiver um, crie um novo diretório, como
pythonouscripts. Evite pastas no seu OneDrive, pois a sincronização pode interferir no gerenciamento do seu ambiente virtual.Crie um novo projeto com
uv.uv init mssql-python-repeatable-qs cd mssql-python-repeatable-qs
Adicionar dependências
No mesmo diretório, instale os pacotes mssql-python, python-dotenv e rich.
uv add mssql-python python-dotenv rich
Iniciar o Visual Studio Code
No mesmo diretório, execute o comando a seguir.
code .
Atualizar pyproject.toml
O pyproject.toml contém os metadados do projeto. Abra o arquivo em seu editor favorito.
Examine o conteúdo do arquivo. Deve ser semelhante a este exemplo. Observe a versão do Python e a dependência para
mssql-python; use>=para definir uma versão mínima. Se preferir uma versão exata, altere o>=para==antes do número da versão. As versões resolvidas de cada pacote são armazenadas no uv.lock. O lockfile garante que os desenvolvedores que trabalham no projeto utilizem versões consistentes de pacotes. Ele também garante que exatamente o mesmo conjunto de versões de pacote seja usado ao distribuir seu pacote para os usuários finais. Faça commit tantopyproject.tomlquantouv.lock, revise as alterações de lockfile em pull requests e execute um scanner de dependências aprovado pela organização no CI. Não edite ouv.lockarquivo diretamente.[project] name = "mssql-python-repeatable-qs" version = "0.1.0" description = "Add your description here" readme = "README.md" requires-python = ">=3.11" dependencies = [ "mssql-python>=0.10.0", "python-dotenv>=1.1.1", "rich>=14.1.0", ]Atualize a descrição para ser mais descritiva.
description = "Connects to a SQL database using mssql-python"Salve e feche o arquivo.
Atualizar main.py
Abra o arquivo chamado
main.py. Deve ser semelhante a este exemplo.def main(): print("Hello from mssql-python-repeatable-qs!") if __name__ == "__main__": main()No topo do arquivo, adicione as seguintes importações antes da linha com
def main().Dica
Se o Visual Studio Code estiver tendo problemas para resolver pacotes, você precisará atualizar o interpretador para usar o ambiente virtual.
from os import getenv from dotenv import load_dotenv from mssql_python import connect, Connection, Cursor from rich.console import Console from rich.progress import Progress, SpinnerColumn, TextColumn from rich.table import Table from argparse import ArgumentParser from time import sleepEntre as importações e a linha com
def main(), adicione o código a seguir.def get_results(sleep_time: int = 0) -> None: with Progress( SpinnerColumn(), TextColumn("[progress.description]{task.description}"), transient=True, ) as progress: task = progress.add_task( description="Connecting to SQL...") cursor = query_sql() # Simulate a slow connection for demo purposes sleep(sleep_time) progress.update(task, description="Formatting results...") table = Table(title="Orders by Customer") # https://rich.readthedocs.io/en/stable/appendix/colors.html table.add_column("Customer ID", style="bright_blue", justify="center") table.add_column("Company Name", style="bright_white", justify="left") table.add_column("Order Count", style="bold green", justify="right") records = cursor.fetchall() for r in records: table.add_row(f"{r.CustomerID}", f"{r.CompanyName}", f"{r.OrderCount}") if cursor: cursor.close() # Simulate a slow connection for demo purposes sleep(sleep_time) progress.stop() Console().print(table)Entre as importações e
def get_results(sleep_time: int = 0) -> None:, adicione este código._connection = None def get_connection() -> Connection: global _connection if not _connection: load_dotenv() _connection = connect(getenv("SQL_CONNECTION_STRING")) # type: ignore return _connection def query_sql() -> Cursor: SQL_QUERY = """ SELECT TOP 5 c.CustomerID, c.CompanyName, COUNT(soh.SalesOrderID) AS OrderCount FROM SalesLT.Customer AS c LEFT OUTER JOIN SalesLT.SalesOrderHeader AS soh ON c.CustomerID = soh.CustomerID GROUP BY c.CustomerID, c.CompanyName ORDER BY OrderCount DESC; """ conn = get_connection() cursor = conn.cursor() cursor.execute(SQL_QUERY) return cursorLocalize este código.
def main(): print("Hello from mssql-python-repeatable-qs!")Substitua-o por esse código.
def main() -> None: parser = ArgumentParser() parser.add_argument("--sleep-time", type=int, default=0, help="Time to sleep in seconds to simulate slow connection") args = parser.parse_args() if args.sleep_time > 0: get_results(args.sleep_time) else: get_results() if _connection: _connection.close()Salvar e fechar
main.py.
Salvar a cadeia de conexão
Abra o
.gitignorearquivo e adicione uma exclusão para.envarquivos. Seu arquivo deve ser semelhante a este exemplo. Salve-o e feche-o quando terminar.# Python-generated files __pycache__/ *.py[oc] build/ dist/ wheels/ *.egg-info # Virtual environments .venv # Connection strings and secrets .envNo diretório atual, crie um novo arquivo chamado
.env.No arquivo
.env, adicione uma entrada para sua string de conexão chamadaSQL_CONNECTION_STRING. Substitua o exemplo aqui pelo valor real da cadeia de conexão.SQL_CONNECTION_STRING="Server=<server_name>;Database=<database_name>;Encrypt=yes;TrustServerCertificate=no;Authentication=ActiveDirectoryInteractive"Importante
Mantenha
.envlocal e fora do controle de código-fonte. Para ambientes de CI e de implantação, injete a cadeia de conexão ou os segredos que a compõem a partir do cofre de segredos da sua plataforma, em vez de copiar.enventre máquinas.Dica
A cadeia de conexão usada aqui depende em grande parte do tipo de banco de dados SQL ao qual você está se conectando. Se você estiver se conectando a um Banco de Dados SQL do Azure ou a um banco de dados SQL no Fabric, use a cadeia de conexão ODBC na guia cadeias de conexão. Talvez seja necessário ajustar o tipo de autenticação dependendo do seu cenário. Para obter mais informações sobre cadeias de conexão e sua sintaxe, consulte a referência de sintaxe da cadeia de conexão.
Use o comando uv run para executar o script
Dica
No macOS, tanto ActiveDirectoryInteractive quanto ActiveDirectoryDefault funcionam para autenticação do Microsoft Entra.
ActiveDirectoryInteractive solicita que você faça login toda vez que executar o script. Para evitar repetidos prompts de login, faça login uma vez pela CLI do Azure executando az login, depois use ActiveDirectoryDefault, que reutiliza a credencial em cache.
Na janela do terminal de antes ou em uma nova janela de terminal aberta para o mesmo diretório, execute o comando a seguir.
uv run main.pyAgora, vamos executá-lo novamente, mas mais lentamente para poder ver as duas atualizações de status.
uv run main.py --sleep-time 5Esta é a saída esperada quando o script é concluído.
Orders by Customer ┏━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━┓ ┃ Customer ID ┃ Company Name ┃ Order Count ┃ ┡━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━┩ │ 29485 │ Professional Sales and Service │ 1 │ │ 29531 │ Remarkable Bike Store │ 1 │ │ 29546 │ Bulk Discount Store │ 1 │ │ 29568 │ Coalition Bike Company │ 1 │ │ 29584 │ Futuristic Bikes │ 1 │ └─────────────┴────────────────────────────────┴─────────────┘Para implantar seu script em outra máquina, copie os arquivos do projeto, incluindo
pyproject.tomle , mas não auv.lockpasta nem qualquer arquivo local.venv.env. Recrie o ambiente virtual na primeira execução e forneça os segredos por meio do ambiente de destino.
Próximas Etapas
Use estes artigos para continuar construindo:
- Construa strings de conexão para configurar conexões para diferentes tipos de bancos de dados SQL e métodos de autenticação.
- Executar consultas para aprender sobre padrões de consulta, consultas parametrizadas e tratamento de resultados.
- Gerenciamento de conexões para usar gerenciadores de contexto, pooling e configurações de conexão.