Como acessar bancos de dados SQL Server usando Python

Tutorial de acesso a bancos de dados SQL Server usando Python

A linguagem Python possui suporte a uma grande quantidade de sistemas de bancos de dados, por meio do uso de bibliotecas específicas para cada SGBD.

Neste tutorial vou mostrar como usar uma biblioteca de código aberto para acessar um banco de dados Microsoft SQL Server a partir de um script em Python, realizando a conexão ao banco e, posteriormente, uma consulta simples em uma de suas tabelas.

Para acessar bancos de dados SQL Server usando Python, podemos usar a biblioteca pyodbc. Esta biblioteca permite, na verdade, acessar diversos bancos de dados ODBC, sendo o SQL Server apenas um deles.

Vamos ao tutorial passo a passo.

Python e SQL Server

1. Instalar o driver de acesso ao SQL Server

Antes de começar, precisamos instalar a biblioteca ODBC para Python. Podemos usar o pip ou o conda para instalá-la com um dos seguintes comandos:

$ pip install pyodbc  # ou
$ conda install pyodbc

2. Importamos a biblioteca necessária e criamos uma nova conexão com o banco de dados

import pyodbc

# String de conexão com o banco de dados
conn = pyodbc.connect('Driver={SQL Server};'
'Server=nome_servidor;'
'Database=nome_banco_dados;'
'Trusted_Connection=yes;')

Substituimos nome_servidor e nome_banco_dados pelo nome do servidor e do banco de dados ao qual desejamos nos conectar (por exemplo, localhost e db_biblioteca, respectivamente).

Se precisamos usar a autenticação SQL Server, em vez de autenticação do Windows, a string de conexão fica assim:

conn = pyodbc.connect('Driver={SQL Server};'
'Server=nome_servidor;'
'Database=nome_banco_dados;'
'UID=usuário;'
'PWD=senha')

Substituimos usuário e senha pelo nome de usuário e senha de acesso ao SQL Server.

3. Agora criamos um objeto do tipo cursor e o empregamos para executar os comandos SQL desejados

# Criar um objeto cursor
cursor = conn.cursor()

# Comando SQL a executar
cursor.execute('SELECT * FROM nome_tabela')

# Buscar todos os resultados
for row in cursor:
    print(row)

Devemos substituir nome_tabela pelo nome da tabela que desejamos consultar. Também é possível executar comandos SQL de atualização, inserção e exclusão usando o método execute.

4. Por fim fechamos a conexão com o banco de dados:

conn.close()

Essa instrução irá encerrar a conexão com o banco de dados SQL Server.

Exemplo completo

Vamos usar o banco de dados db_biblioteca neste exemplo, acessando a tabela de livros (tbl_livros) e retornando todas as linhas dessa tabela. O servidor SQL Server em questão utiliza autenticação do Windows:

import pyodbc

# Conexão com o banco de dados
conn = pyodbc.connect('Driver={SQL Server};'
'Server=localhost;'
'Database=db_biblioteca;'
'Trusted_Connection=yes;')

# Criar o objeto cursor
cursor = conn.cursor()

# Executar a consulta SQL
cursor.execute('SELECT * FROM tbl_livro')

# Busca todos os resultados
for row in cursor:
    print(row)

Resultado:

Consulta a banco SQL Server com Python e pyodbc

Inserir novas linhas no banco de dados

E se quisermos inserir novos registros em uma tabela?

Neste caso podemos criar um dicionário contendo pares chave:valor representando os nomes das colunas da tabela e os respectivos dados a serem inseridos, e então criar uma consulta SQL para enviar esses dados ao banco, como no exemplo a seguir, onde eu crio um novo registro na tabela de autores:

# Criar um dicionário com os dados a inserir no banco

autor = {
"ID_Autor": 10,
"Nome_Autor": "Fábio",
"Sobrenome_Autor": "dos Reis"
}

# Criar a consulta SQL
sql_query = f"INSERT INTO tbl_autores (ID_Autor, Nome_Autor, Sobrenome_Autor) VALUES (?, ?, ?)"

# Cursor para executar a consulta
cursor = conn.cursor()

# Executar a consulta
cursor.execute(sql_query, autor["ID_Autor"], autor["Nome_Autor"], autor["Sobrenome_Autor"])

# Confirmar a transação (comitar)
conn.commit()

# Encerrar a conexão
conn.close()

No exemplo acima, o cursor é criado usando a conexão estabelecida na etapa anterior. Em seguida, a consulta é executada usando o método execute() do cursor. Certifique-se de passar os valores a serem inseridos na consulta como argumentos para o método execute().

Por fim, é importante confirmar a transação usando o método commit() da conexão. Se você não fizer isso, os dados inseridos não serão salvos no banco de dados.

É isso aí! Este foi um tutorial básico para acesso a bancos de dados SQL Server usando a linguagem Python com a biblioteca pyodbc. Existem muitas outras opções de configuração e métodos disponíveis na biblioteca pyodbc, e algumas delas serão discutidas nos próximos tutoriais dessa série.

.

Sobre Fábio dos Reis (1221 Artigos)
Fábio dos Reis trabalha com tecnologias variadas há mais de 30 anos, tendo atuado nos campos de Eletrônica, Telecomunicações, Programação de Computadores e Redes de Dados. É um entusiasta de Ciência e Tecnologia em geral, adora Viagens e Música, e estuda idiomas, além de ministrar cursos e palestras sobre diversas tecnologias em São Paulo e outras cidades do Brasil.

Escreva um comentário

Seu e-mail não será divulgado


*