Pro případ, že by se našel někdo, kdo by měl zájem o připojení ke vzdálenému Postgresql databázi přes SSH a chce načíst data do pandas DataFrame zde je návod, jak to udělat.
Předpokládejme, že jsme na vzdálený server nainstalovali postgresql databázi, ke které můžeme ssh pomocí následujících parametrů.
Parametry SSH:
- IP serveru:
10.0.0.101
- Port SSH:
22
(výchozí port pro SSH ) - Uživatelské jméno:
my_username
- Heslo:
my_password
Parametry databáze:
- Port:
5432
(výchozí port postgresql ) - Název databáze:
db
- Uživatel databáze:
postgres_user
(výchozí uživatelské jméno jepostgres
) - Heslo databáze:
postgres_pswd
(výchozí heslo je prázdný řetězec ) - Tabulka s našimi údaji:
MY_TABLE
Nyní se chceme připojit k této databázi na našem konci a načíst data do 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()