В случай, че има някой, който се интересува от свързване към отдалечен Postgresql база данни чрез SSH и иска да зареди данни в pandas DataFrame ето как да го направите.
Да предположим, че сме инсталирали Postgresql база данни на отдалечен сървър, към който можем да ssh чрез следните параметри.
SSH параметри:
- IP на сървъра:
10.0.0.101
- SSH порт:
22
(порт по подразбиране за SSH ) - Потребителско име:
my_username
- Парола:
my_password
Параметри на базата данни:
- Порт:
5432
(порт по подразбиране на postgresql ) - Име на базата данни:
db
- Потребител на базата данни:
postgres_user
(потребителското име по подразбиране еpostgres
) - Парола за база данни:
postgres_pswd
(Паролата по подразбиране е празен низ ) - Таблица с нашите данни:
MY_TABLE
Сега искаме да се свържем с тази база данни от нашия край и да заредим данни в 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()