Nel caso ci sia qualcuno interessato a connettersi a un Postgresql remoto database tramite SSH e desidera caricare i dati in un Panda DataFrame ecco come farlo.
Supponiamo di aver installato un database postgresql su un server remoto, a cui possiamo eseguire ssh con i seguenti parametri.
Parametri SSH:
- IP del server:
10.0.0.101
- Porta SSH:
22
(porta predefinita per SSH ) - Nome utente:
my_username
- Password:
my_password
Parametri del database:
- Porta:
5432
(porta predefinita postgresql ) - Nome database:
db
- Utente database:
postgres_user
(il nome utente predefinito èpostgres
) - Password del database:
postgres_pswd
(la password predefinita è una stringa vuota ) - Tabella con i nostri dati:
MY_TABLE
Ora, vogliamo connetterci a questo database da parte nostra e caricare i dati in un DataFrame panda:
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()