Fala meu amigo, muito bom poder compartilhar mais um conhecimento com você!
No último post, o assunto abordado foi a manipulação de dados combinando Python e Microsoft SQL Server, o que chamei de combinação perfeita! Se por algum motivo você não acompanhou a postagem, não se preocupe, vou disponibilizar o link dele para você.
Nos comentários desse post, um grande amigo e profissional da área que tive o grande prazer de trabalhar e aprender com ele, lançou uma pergunta que no momento eu não sabia responder, mais prometi que estaria correria atrás e quando tivesse, faria um post, pois a dúvida dele poderia também ser a sua, como no caso foi a minha!
Vamos ver o que ele mandou!
Muito bom mesmo Gabriel. Usando o Anaconda 3, se faz necessário algum pip install XPTO para fazer o ODBC com SQL Server, Mysql, Oracle e etc.. ?
Meu amigo André Rodrigues, a resposta para a sua pergunta é SIM! Segue comigo...
Vou falar primeiro sobre o MySQL.
O passo inicial para que isso aconteça, é realizar a instalação da biblioteca pymysql. A sua instalação é bem simples e segue o mesmo padrão para as que abordamos até o momento.
# Instalação da Biblioteca pymysql - Driver de Conexão
pip install pymysql
Feito isso, vamos analisar como que é a sintaxe para construção da nossa string de conexão.
engine = sqlalchemy.create_engine( ‘mysql+drive://usuario:senha@ip-servidor:porta/banco-de-dados‘)
Agora analise como que fica a o nosso script completo
import pandas as pd
import sqlalchemy
import pymysql
usuario = 'USUARIO'
senha = 'SENHA'
ip_servidor = 'IP-SERVIDOR'
porta = 'PORTA'
banco = 'NOME DO BANCO'
enginemysql = sqlalchemy.create_engine(f'mysql+pymysql://{usuario}:{senha}@{ip_servidor}:{porta}/{banco}')
df = pd.read_sql_table('NOME TABELA',enginemysql)
df.head(3)
Simples assim! Bora pro próximo...
Agora vamos abordar como que seria se a nossa base de dados fosse o PostGre.
De modo semelhante ao MySQL, precisamos realizar a instalação de um drive de conexão.
Para o PostGre, vamos precisar instalar o psycopg2-binary. Simples e igual ao MySQL.
Acompanha comigo.
# Instalação da Biblioteca pymysql - Driver de Conexão
pip install psycopg2-binary
Do mesmo modo que apresentei para o MySQL, vamos analisar como que é a sintaxe para construção da nossa string de conexão.
engine = psycopg2.connect(host=ServerName, database=DatabaseName,user=UserName, password=Password)
E agora vamos analisar como que fica o script completo.
import psycopg2
ip_servidor = 'SERVIDOR'
porta = 'PORTA'
banco = 'NOME DO BANCO'
usuario = 'USUARIO'
senha = 'SENHA'
enginepostgre = psycopg2.connect(host=ip_servidor,database=banco,user=usuario,password=senha)
con = psycopg2.connect(host=ip_servidor , database=banco ,user=usuario , password=senha )
cur = con.cursor()
cur.execute('SELECT * FROM TABELA')
recset = cur.fetchall()
for rec in recset:
print (rec)
con.close()
E por último, o Oracle!
Esse é um pouco mais complicadinho.
Vamos passo a passo.
Para o Oracle, também vamos precisar instalar uma biblioteca. No caso do Oracle a biblioteca será cx_Oracle.
pip install cx_Oracle
Após isso, vamos precisar baixar o Oracle Instant Client Downloads for Microsoft Windows (x64) 64-bit.
Nesse momento o download pode ser realizado através do link Instant Client for Microsoft Windows (x64) 64-bit (oracle.com).
Ao concluir o download, vamos descompactar o nosso arquivo. Do meu lado, descompactei no diretório "C:\Temp\oracle", não precisa seguir o mesmo exemplo, fique a vontade para colocar onde achar melhor, porém caso mude, sugiro que fique atento ao próximo passo.
No script abaixo, é necessário informar onde estão os arquivos que foram descompactados no passo anterior.
import os
import platform
# Diretório onde estão os arquivos
lib_dir = r"C:\Temp\oracle\instantclient-basic-windows.x64-19.11.0.0.0dbru\instantclient_19_11"
# Passo para validação dos arquivos 64 bits
print("ARCH:", platform.architecture())
print("FILES AT lib_dir:")
for name in os.listdir(lib_dir):
print(name)
Concluída a configuração acima, vamos iniciar a biblioteca, basta executar o script abaixo.
try:
cx_Oracle.init_oracle_client(lib_dir=lib_dir)
except Exception as err:
print("Error connecting: cx_Oracle.init_oracle_client()")
print(err);
sys.exit(1);
Agora vamos montar nosso script final. Porém vamos analisar como que fica nosso string de conexão.
dsn = cx_Oracle.makedsn(ip_servidor,porta,service_name=service_name)
connection = cx_Oracle.connect(user=usuario,password=senha,dsn=dsn,encoding=encoding)
E agora vamos analisar como que fica o script completo.
import pandas as pd
import cx_Oracle
import sqlalchemy
from sqlalchemy.exc import SQLAlchemyError
ip_servidor = 'SERVIDOR'
porta = 'PORTA'
banco = 'NOME DO BANCO'
usuario = 'USUARIO'
senha = 'SENHA'
service_name = 'SERVICE NAME'
encoding='UTF-8'
dsn = cx_Oracle.makedsn(ip_servidor,porta,service_name=service_name)
connection = cx_Oracle.connect(user=usuario,password=senha,dsn=dsn,encoding=encoding)
cursor = connection.cursor()
cursor.execute("""SELECT COLUNA FROM TABELA""")
for COLUNA in cursor:
print("Values:", COLUNA)
Bem meu amigo! Com isso chegamos ao término de mais um post.
Esse é bem mais rápido é objetivo. O nosso amigo André lançou uma dúvida e espero ter ajudado a esclarecer.
Espero você no próximo, grande abraço e fique com Deus!
Documentação SQL Alchemy - https://docs.sqlalchemy.org/en/latest/core/engines.html
Documentação PyMysql - https://pypi.org/project/PyMySQL/
Documentação PsyCopg2-Binary - https://pypi.org/project/psycopg2-binary/
Documentação cx_Oracle - cx_Oracle - Python Interface for Oracle Database
Falaaaaa Gabriel
Muito bom mesmo, ficou claro como conectar e manipular as fontes de dados tradicionais ( Oracle, Sql Server , Mysql e PostGre ) onde questionei como instalar as bibliotecas no Python e se conectar a esses ambientes e sem duvida esse posts esta me ajudando e com certeza muitos amigos que estão focados nesse atual mundo de processamento de extenso datasets de dados.
Muito obrigado e sucesso à voces !!!!!!!!!!
Andre Rodrigues