Python

1 set, 2020

Aprendendo a utilizar Azure SQL com Python

Publicidade

Neste artigo, irei demonstrar como utilizar o Azure SQL Database com o Python.

Artigo original pode ser lido aqui

Vamos fazer uma conexão e fazer uma consulta no banco de dados, e mostraremos em uma tabela em uma página Web, para isso utilizaremos o Flask, Microframework do Python para web.

Se ainda não estiver familiarizados com essas ferramentas, leia o meu primeiro artigo da série:

https://medium.com/jundevelopers/publicando-sua-aplica%C3%A7%C3%A3o-web-em-python-flask-no-webapp-do-azure-e3e59f35fc1c

Dentro do Portal do Azure, clique em adicionar um novo recurso.

Image for post

Escolha a opção de Criar um novo recurso

A seguir, escolha no menu a opção Databases e em seguida clique em SQL Database. Ou procure na aba de busca por SQL Database.

Image for post

Vamos agora criar o servidor de Banco de Dados, por enquanto ainda não criamos o Banco de dados.

Se você já tiver um servidor configurado, pode escolher diretamente.

Se não, siga os passos da figura, escolhendo um nome para o seu Server, exemplo: pythonflaskconazuresql

Image for post

No meu caso, nomeie como sqlpythonflask

Informe o admin login e a senha do server

Detalhe: Guarde bem essas informações para conectar posteriormente

Image for post

Nosso Server criado, vamos dar uma nome para o nosso database, no meu caso, escolhi pythonflasksql

O Database será o local onde estarão nossas tabelas, procedures e etc.

Image for post

Dentro do recurso, ao clicar em Overview, escolha a opção de Configurar o Firewall do seu servidor

Essa etapa é importante para você se conectar no Banco de Dados e fazer testes locais.

Image for post

Clique na opção de adicionar o IP do cliente, dessa maneira ele adiciona uma regra para que o seu IP consiga se conectar no Banco de Dados

Obs: Isso serve apenas para conexão local ou de fora do Azure, se sua aplicação estiver hospedada no Azure, essa etapa não é necessária.

Obs 2 NÃO RECOMENDADO: Para facilitar, você pode abrir todos os IPs para conexão, para isso vá em Rule Name e digite all, no campo Start IP digite 0.0.0.0 e no campo End IP digite 255.255.255.255, dessa maneira você habilita entrada no seu Database de todos os IPs. Lembrando que isso deve ser apenas temporário.

Image for post

Feito isso, podemos acessar nosso Database de um Client como o Management Studio.

Server Name utilize o cadastrado, no meu caso sqlpythonflask, caso não lembre, no Portal do Azure, dentro da aba Overview, você encontrará no nome do Servidor conforme figura abaixo.

Login e Senha que foi definido anteriormente.

Image for post

Image for post

Image for post

Conectado no Management Studio

Pelo Management Studio, criamos uma tabela para fins de estudo conforme script abaixo.

Copie e cole no Management Studio

Nosso Banco de dados esta pronto.

CREATE TABLE dbo.cadastro
	(
	chave_pk int NOT NULL IDENTITY(1,1) PRIMARY KEY,
	nome varchar(500) NOT NULL,
	sobrenome varchar(500) NOT NULL,
	email varchar(500) NOT NULL
	)  

INSERT INTO [dbo].[cadastro]
           ([nome]
           ,[sobrenome]
           ,[email])
     VALUES
           ('João'
           ,'Silveira'
           ,'joasilveira@email.com')
GO
INSERT INTO [dbo].[cadastro]
           ([nome]
           ,[sobrenome]
           ,[email])
     VALUES
           ('Maria'
           ,'Oliveira'
           ,'mariaoliveira@email.com')

Agora vamos para à parte do Python

A biblioteca do Python para se conectar, tanto no SQL SERVER, quanto no Azure SQL é a pyodbc

vamos utilizar o comando a seguir para instalar no ambiente:

pip install pyodbc

Lembrando que devemos ter o Flask instalado também, veja no meu primeiro artigo, cujo o link esta a cima.

Precisamos nos certificar também se o Driver de conexão esta instalado. Para usuários de Windows, o Driver ODBC for SQL Server já vem nativo. Para usuários Linux, é necessário configurar o Driver, confira no link abaixo como fazer:

https://docs.microsoft.com/pt-br/sql/connect/odbc/linux-mac/installing-the-microsoft-odbc-driver-for-sql-server?view=sql-server-ver15

Instalado o pyodbc e o Flask, copie e cole o código abaixo em seu editor ou IDE de preferência, no caso, eu uso o Visual Studio Code

from flask import Flask, jsonify
import pyodbc 
import json
app = Flask(__name__)

@app.route('/',methods=['GET'])
def table():
    server = 'sqlpythonflask.database.windows.net' 
    database = 'pythonflasksql' 
    username = 'luigi' 
    password = '<SUA SENHA>' 
    cnxn = pyodbc.connect('DRIVER={ODBC Driver 17 for SQL Server};SERVER='+server+';DATABASE='+database+';UID='+username+';PWD='+ password)
    cursor = cnxn.cursor()

    cursor.execute("SELECT [nome] ,[sobrenome],[email] FROM [dbo].[cadastro]") 
    row = cursor.fetchone() 
    html = '<table border="1" style="width:50%"><tr><th>Nome</th><th>Sobrenome</th><th>Email</th></tr>'
    while row: 
        html += '<tr><td>'+row.nome+'</td><td>'+row.sobrenome+'</td><td>'+row.email+'</td></tr>'
        row = cursor.fetchone()
    html += '</table>'
    return html

if __name__ == '__main__':
    app.run(debug=True)
Image for post

Vamos analisar o código:

Na linha 2, importamos a biblioteca pyodbc.

Na linhas 6 e 7, criamos nossa rota que o Flask irá utilizar na navegação.

Das linhas 8 a 11, informamos as propriedades do Banco de dados, nome do Server, o Database, login e senha, como fizemos anteriormente no Management Studio.

Na linha 12, abrimos a conexão com o banco de dados, passando os parâmetros da nossa conexão.

Na linha 15, executamos uma query, no caso, um SELECT simples.

Da linha 17 a 21, montamos o código HTML que será renderizado pelo Flask. Essa não é a melhor maneira de montar o HTML, será abordada posteriormente o Jinja, biblioteca própria para isso.

Na linha 22, retorno meu HTML que será renderizado pelo Flask e enviado ao navegador.

Iniciado nossa aplicação

Image for post

Navegamos no localhost, onde a consulta no banco de dados foi feita e nossa tabela foi montada.

Image for post

Obrigado por ler o artigo, espero que gostem.

Image for post

Faça parte de comunidades técnicas, é muito importante para sua carreira, conheça as comunidade que sou líder.

DevelopersBR: https://www.meetup.com/pt-BR/DevelopersBR/

Azure Talks: https://www.meetup.com/pt-BR/azure-talks/

Se inscreva no canal do YouTube também: youtube.com/developersbr

Me sigam nas redes sociais.

Linkedin: https://www.linkedin.com/in/luigitavolaro/

GitHub: https://github.com/LuigiTavolaro

Twitter: https://twitter.com/LuigiTavolaro

Valeu e Obrigado