Om det finns någon som är intresserad av att ansluta till en fjärransluten Postgresql databas via SSH och vill ladda data till en pandas DataFrame så här gör du.
Anta att vi har installerat en postgresql-databas på en fjärrserver, till vilken vi kan ssh med följande parametrar.
SSH-parametrar:
- Serverns ip:
10.0.0.101
- SSH-port:
22
(standardport för SSH ) - Användarnamn:
my_username
- Lösenord:
my_password
Databasparametrar:
- Port:
5432
(postgresql standardport ) - Databasnamn:
db
- Databasanvändare:
postgres_user
(standardanvändarnamn ärpostgres
) - Databaslösenord:
postgres_pswd
(standardlösenordet är en tom sträng ) - Tabell med våra data:
MY_TABLE
Nu vill vi ansluta till den här databasen på vår sida och ladda data till 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()