Caso haja alguém interessado em se conectar a um Postgresql remoto banco de dados via SSH e deseja carregar dados em um pandas DataFrame aqui está como fazê-lo.
Suponha que tenhamos instalado um banco de dados postgresql em um servidor remoto, para o qual podemos ssh pelos seguintes parâmetros.
Parâmetros SSH:
- IP do servidor:
10.0.0.101
- Porta SSH:
22
(porta padrão para SSH ) - Nome de usuário:
my_username
- Senha:
my_password
Parâmetros do banco de dados:
- Porta:
5432
(porta padrão do postgresql ) - Nome do banco de dados:
db
- Usuário do banco de dados:
postgres_user
(nome de usuário padrão épostgres
) - Senha do banco de dados:
postgres_pswd
(a senha padrão é uma string vazia ) - Tabela com nossos dados:
MY_TABLE
Agora, queremos nos conectar a esse banco de dados do nosso lado e carregar os dados em um DataFrame do pandas:
from sshtunnel import SSHTunnelForwarder
from sqlalchemy import create_engine
import pandas as pd
server = SSHTunnelForwarder(
('10.0.0.101', 22),
ssh_username="my_username",
ssh_password="my_password",
remote_bind_address=('127.0.0.1', 5432)
)
server.start()
local_port = str(server.local_bind_port)
engine = create_engine('postgresql://{}:{}@{}:{}/{}'.format("postgres_user", "postgres_pswd", "127.0.0.1", local_port, "db"))
dataDF = pd.read_sql("SELECT * FROM \"{}\";".format("MY_TABLE"), engine)
server.stop()