Voor het geval er iemand is die geïnteresseerd is om verbinding te maken met een externe Postgresql database via SSH en wil gegevens laden in een pandas DataFrame hier is hoe het te doen.
Stel dat we een postgresql-database op een externe server hebben geïnstalleerd, waarnaar we kunnen ssh-en met de volgende parameters.
SSH-parameters:
- IP van de server:
10.0.0.101
- SSH-poort:
22
(standaardpoort voor SSH ) - Gebruikersnaam:
my_username
- Wachtwoord:
my_password
Databaseparameters:
- Poort:
5432
(postgresql standaardpoort ) - Databasenaam:
db
- Databasegebruiker:
postgres_user
(standaard gebruikersnaam ispostgres
) - Databasewachtwoord:
postgres_pswd
(standaard wachtwoord is een lege string ) - Tabel met onze gegevens:
MY_TABLE
Nu willen we aan onze kant verbinding maken met deze database en gegevens in een panda's DataFrame laden:
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()