Hvis der er nogen, der er interesseret i at oprette forbindelse til en ekstern Postgresql database via SSH og ønsker at indlæse data i en pandas DataFrame her er, hvordan du gør det.
Antag, at vi har installeret en postgresql-database på en ekstern server, som vi kan ssh til ved hjælp af følgende parametre.
SSH-parametre:
- Servers IP:
10.0.0.101
- SSH-port:
22
(standardport for SSH ) - Brugernavn:
my_username
- Adgangskode:
my_password
Databaseparametre:
- Port:
5432
(postgresql standardport ) - Databasenavn:
db
- Databasebruger:
postgres_user
(standardbrugernavnet erpostgres
) - Databaseadgangskode:
postgres_pswd
(standardadgangskoden er en tom streng ) - Tabel med vores data:
MY_TABLE
Nu vil vi oprette forbindelse til denne database på vores side og indlæse data i en pandas DataFrame:
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()