top of page
Foto do escritorGabriel Quintella

Python, Trabalhando com MySQL, PostGre e Oracle


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 PyMysql - https://pypi.org/project/PyMySQL/

Documentação PsyCopg2-Binary - https://pypi.org/project/psycopg2-binary/

149 visualizações2 comentários

Posts recentes

Ver tudo

2 Comments


db.andre
Aug 19, 2021

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

Like
Gabriel Quintella
Gabriel Quintella
Aug 19, 2021
Replying to

TMJ meu amigo! Sucesso à nós! Vamos que vamos!

Like
bottom of page