Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Neste guia de início rápido, você usa uv para gerenciar dependências de projeto e ambientes para script Python que se conecta a um banco de dados que você criou e carregou com dados de exemplo. Você usa o mssql-python driver para Python para se conectar ao seu 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 máquinas 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.
Documentação | Código-fonte | Pacote (PyPI) | UV
Pré-requisitos
Python 3.10 ou posterior
Se ainda não tens o Python, instala o runtime do Python e o gestor de pacotes pip a partir de python.org.
Não quer usar o seu próprio ambiente? Consulte Container and local development para criar um ambiente devcontainer reproduzível ou um ambiente do GitHub Codespaces.
Visual Studio Code com as seguintes extensões:
Azure Command-Line Interface (CLI) para autenticação sem palavra-passe no macOS e Linux.
Se ainda não tiver
uv, siga as instruções de instalação.Um banco de dados no SQL Server, Banco de Dados SQL do Azure ou Banco de Dados SQL no Fabric com o
AdventureWorks2025esquema de exemplo e uma cadeia de conexão válida.
Instale pré-requisitos que devem ser instalados uma única vez específicos do sistema operacional. Os utilizadores do Windows podem saltar este passo. Para detalhes completos da plataforma, consulte Instalar mssql-python.
Criar um banco de dados SQL
Criar ou ligar-se a uma base de dados SQL numa das seguintes plataformas:
- Banco de Dados SQL do Azure
- Base de dados SQL no Fabric
- Microsoft SQL Server
- container do SQL Server
Criar um banco de dados SQL em minutos usando o portal do Azure
Crie o projeto e execute o código
- Criar um novo projeto
- Adicionar dependências
- Iniciar o Visual Studio Code
- Atualizar pyproject.toml
- Atualizar main.py
- Salvar a cadeia de conexão
- Use uv run para executar o script
Criar um novo projeto
Abra um prompt de comando no diretório de desenvolvimento. Se não tiver um, crie um novo diretório, como
pythonouscripts. Evite pastas no seu OneDrive, pois a sincronização pode interferir na gestão 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
Abra o Visual Studio Code.
No mesmo diretório, execute o seguinte comando.
code .
Atualizar pyproject.toml
O pyproject.toml contém os metadados para o seu projeto. Abra o arquivo em seu editor favorito.
Revise o conteúdo do arquivo. Deve ser semelhante a este exemplo. Tenha em atenção a versão e a dependência do Python; 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 ficheiro de bloqueio garante que os programadores que trabalham no projeto utilizam versões consistentes dos pacotes. Ele também garante que o mesmo conjunto exato de versões de pacote seja usado ao distribuir seu pacote para usuários finais. Faça commit depyproject.tomleuv.lock, reveja as alterações ao ficheiro lock nos pull requests e execute um verificador de dependências aprovado pela organização em CI. Não edites ouv.lockficheiro 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 ficheiro, adicione as seguintes importações antes da linha com
def main().Sugestão
Se o Visual Studio Code estiver tendo problemas para resolver pacotes, você precisará atualizar o intérprete 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 cursorEncontre este código.
def main(): print("Hello from mssql-python-repeatable-qs!")Substitua-o por este 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()Salve e feche
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. Certifique-se de salvá-lo e fechá-lo 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.Dentro do
.envarquivo, adicione uma entrada para sua cadeia 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
.envlocalmente e fora do controlo de código-fonte. Para CI e ambientes de implementação, injete a cadeia de ligação ou os segredos que a compõem a partir do repositório de segredos da sua plataforma, em vez de copiar.envde uma máquina para outra.Sugestão
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 na Malha, 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 cenário. Para obter mais informações sobre cadeias de conexão e sua sintaxe, consulte Referência de sintaxe de cadeia de conexão.
Use uv run para executar o script
Sugestão
No macOS, tanto ActiveDirectoryInteractive como ActiveDirectoryDefault funcionam para a autenticação do Microsoft Entra.
ActiveDirectoryInteractive Solicita-te para iniciar sessão sempre que executas o script. Para evitar pedidos repetidos para iniciar sessão, inicie sessão uma vez através da CLI do Azure ao executar az login, e depois utilize ActiveDirectoryDefault, que reutiliza a credencial em cache.
Na janela do terminal anterior ou em uma nova janela do terminal aberta no mesmo diretório, execute o seguinte comando.
uv run main.pyAgora vamos executá-lo novamente, mas mais lentamente para poder ver ambas as atualizações de status.
uv run main.py --sleep-time 5Aqui está a saída esperada quando o script for 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 o seu script noutra máquina, copie os ficheiros do projeto, incluindo
pyproject.tomleuv.lock, mas não a.venvpasta nem qualquer ficheiro local.env. Recrie o ambiente virtual na primeira execução e forneça segredos através do ambiente alvo.
Passos seguintes
Use estes artigos para continuar a construir:
- Construa cadeias de ligação para configurar ligações para diferentes tipos de bases de dados SQL e métodos de autenticação.
- Executar consultas para aprender sobre padrões de consulta, consultas parametrizadas e tratamento de resultados.
- Gestão de ligações para utilização de gestores de contexto, agrupamento e definições de ligação.