Na wypadek, gdyby ktoś był zainteresowany połączeniem się ze zdalnym Postgresql bazy danych przez SSH i chce załadować dane do pandy DataFrame oto jak to zrobić.
Załóżmy, że zainstalowaliśmy bazę danych postgresql na zdalnym serwerze, do której możemy ssh za pomocą następujących parametrów.
Parametry SSH:
- IP serwera:
10.0.0.101
- Port SSH:
22
(domyślny port dla SSH ) - Nazwa użytkownika:
my_username
- Hasło:
my_password
Parametry bazy danych:
- Port:
5432
(domyślny port Postgresql ) - Nazwa bazy danych:
db
- Użytkownik bazy danych:
postgres_user
(domyślna nazwa użytkownika topostgres
) - Hasło do bazy danych:
postgres_pswd
(domyślne hasło to pusty ciąg ) - Tabela z naszymi danymi:
MY_TABLE
Teraz chcemy połączyć się z tą bazą danych po naszej stronie i załadować dane do pandy 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()