Trong trường hợp có bất kỳ ai quan tâm đến việc kết nối với Postgresql từ xa cơ sở dữ liệu qua SSH và muốn tải dữ liệu vào pandas DataFrame đây là cách thực hiện.
Giả sử chúng ta đã cài đặt cơ sở dữ liệu postgresql trên một máy chủ từ xa, chúng ta có thể ssh theo các tham số sau.
Thông số SSH:
- IP của máy chủ:
10.0.0.101
- Cổng SSH:
22
( cổng mặc định cho SSH ) - Tên người dùng:
my_username
- Mật khẩu:
my_password
Tham số cơ sở dữ liệu:
- Cổng:
5432
( cổng mặc định postgresql ) - Tên cơ sở dữ liệu:
db
- Người dùng cơ sở dữ liệu:
postgres_user
( tên người dùng mặc định làpostgres
) - Mật khẩu cơ sở dữ liệu:
postgres_pswd
( mật khẩu mặc định là một chuỗi trống ) - Bảng với dữ liệu của chúng tôi:
MY_TABLE
Bây giờ, chúng tôi muốn kết nối với cơ sở dữ liệu này và tải dữ liệu vào DataFrame của gấu trúc:
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()