Modulo 022 – Integração Python – SQL

– Integração Python – SQL – Integrar Python com o SQL – Configurações

Primeiro é importante lembrar que este é um módulo de integração de Python com SQL e não um curso completo de SQL. Dito isso, vamos para o primeiro passo: A instalação.
Para isso vamos baixar o SQL Server e a base “Contoso“ disponibilizada pela Microsoft.
Para download do SQL Server clique aqui;
Para download da base ‘Contoso’ clique aqui
Feitos os downloads, vamos iniciar a instalação dos SQL Server no próximo slide.

1. Abra o instalador do SQL Server 1 baixado anteriormente;
2. Escolha a opção “Básico”;
3. Aceite os Termos;
4. Clique em Instalar;
5. Aguarde a Conclusão;
6. Instale o SSMS;
7. Baixar o SSMS;
8. Clique em Instalar
9. Reinicie o seu computador;

– Importando o Banco de Dados para o SQL Server

Após as configurações iniciais vamos iniciar importando nossos dados para o SQL Server.
Extraia os arquivos utilizando o Winrar ou 7zip. Após a extração dos arquivos, vamos importá-los com a ajuda do SSMS instalado anteriormente na etapa de configuração. Para inicializa-lo basta procurar por SSMS no menu iniciar.
Após a abertura do SSMS vamos iniciar o processo de importação nos próximos slides.

1. Abra o SQL Server Management Studio (SSMS);
2. Clique com o botão direito do mouse em “Banco de 2 Dados”e selecione “Restaurar Banco de Dados…”;
3. Selecione Dispositivo;
4. Clique em Adicionar;
5. Selecione a base de dados;
6. Confirme a importação da base de dados;

– Biblioteca pyodbc

Vamos finalmente para o Python iniciar nossa integração.
Para isso, usaremos a biblioteca pyodbc(doc).
Se você nunca utilizou essa biblioteca, é bem provável que ela ainda não esteja instalada. Portanto, assim como já fizemos com bibliotecas anteriores, vamos utilizar o pip install para realizar essa instalação no prompt de comando do Anaconda.
pip install pyodbc
Após instalação vamos, como sempre, importar nossa biblioteca e a primeira informação que precisamos inserir no nosso código serão os dados de conexão conforme apresentado ao lado. Esses dados permitirão a conexão entre o Python e nosso banco de
dados.

 import pyodbc 
                  
 dados_conexao = ("Driver={SQLite3 ODBC Driver};" 
             "Server=localhost;" 
             "Database=salarios.sqlite;"
                    
 #caso precisasse de login e senha: 
 #dados_conexao = ("Driver={Seu_Driver};" 
 #            "Server=Seu_Servidor;" 
 #            "Database=NomeBaseDeDados;" 
 #            "UID=Login;" 
 #            "PWD=Senha;") 
                
 conexao = pyodbc.connect(dados_conexao) 
 print('Conexão Bem sucedida'
_________________________________________
 Conexão Bem sucedida 

 "Driver={SQLite3 ODBC Driver};" O driver referente ao seu banco de dados;
 "Server=localhost;" Servidor do banco de dados. Caso seja o computador de empresa, você deverá se informar com a área responsável qual servidor está o banco;
 "Database=salarios.sqlite;" Nome do banco que deseja importar;
 # Dados necessários caso o banco não esteja alocado no seu computador;
 pyodbc.connect(dados_conexao) Utilização do .connect para conectar o Python ao banco de dados.

Após a conexão estabelecida, precisamos criar um intermediário entre o Python e o SQL. Esse intermediário chamaremos de cursor. O pyodbc possui um método que nos permite criar o cursor bem facilmente.
.cursor()
Criado nosso cursor, vamos começar a criar nosso código trabalhará no banco de dados.
Para realizar essas operações, temos 2 opções:
• Opção 1: Utilizar métodos do cursor;
• Opção 2: Utilizar o Pandas.
Visto que já estamos voando no pandas a essa altura do campeonato, vamos aprofundar na opção 2.

 cursor = conexao.cursor() 

• cursor Funciona como um intermediário entre o SQL Server e o Python;
• Método .cursor da biblioteca pyodbc;

 #opção 1: apenas executar um comando no banco de dados 
 # cursor,execute("SELECT * FROM BaseDeDados.Tabela") 
 # conexao.commit() 

• .execute Executa as ações definidas nos parênteses no Banco de Dados
• ("SELECT * FROM BaseDeDados.Tabela") Código em SQL. Basicamente está buscando todos os dados da tabela base de dados.
• .commit() “SALVA” a situação em que o banco de dados se encontra.

Vamos agora para a Opção 2, utilizando o Pandas para consulta dos dados. Nessa opção, reduzimos a necessidade de conhecimentos em SQL e podemos focar no Pandas, que é algo que já temos maior domínio nessa altura do campeonato.
Essencialmente, o que faremos é Ler o Banco de dados em SQL através do Pandas e importar essas informações (assim como fizemos com os arquivos em .csv e excel.)
No exemplo ao lado, temos um código de importação.
Perceba que a estrutura pd.read_ é a mesma já utilizada anteriormente, só mudando o formato para SQL(pd.read_sql (doc)).
O código em vermelho, está em SQL mas apesar de ser um pouco estranho em um primeiro momento, não é tão complexo de ser entendido (deixamos mastigado ali para você ☺).

 #opção 2: puxar uma consulta para o banco de dados com o pandas 
 import pandas as pd 
 produtos_df = pd.read_sql("SELECT * FROM ContosoRetailWD.dbo.DimProduct", conexao) 
 display produtos_df 

• pd.read_sql realiza uma consulta à base de dados indicada;
• SELECT→ Indica uma consulta a uma tabela;
• * → Indica que TODOS os dados devem ser extraídos;
• ContosoRetailDW.dbo.DimProduct → Base de dados + Tabela que será consultada;
• conexao → variável criada anteriormente;

– Cuidados com o SQL e Python

Quando estamos trabalhando com banco de dados temos que ter alguns cuidados.
Alterações em banco de dados podem significar perda de informações se não forem feitas com atenção. Sempre que estamos trabalhando com consultas(SELECT) a banco de dados, podemos ficar um pouco mais tranquilos, pois não estamos de fato alterando a fonte.
No entanto, em alguns casos, quando usamos UPDATE ou CREATE por exemplo, podemos alterar, acrescentar ou até mesmo apagar informações e se esse banco de dados não possuir um backup, iremos PERDER estes dados.
Esse slide não tem como objetivo te assustar, mas sim, te chamar atenção para tomar sempre muito cuidado pois cada vez mais DADOS são o que movem as empresas!

Nenhum comentário:

Postar um comentário