Por si hay alguien interesado en conectarse a un Postgresql remoto base de datos a través de SSH y quiere cargar datos en un pandas DataFrame Aquí está cómo hacerlo.
Supongamos que hemos instalado una base de datos postgresql en un servidor remoto, a la que podemos hacer ssh mediante los siguientes parámetros.
Parámetros de SSH:
- IP del servidor:
10.0.0.101
- Puerto SSH:
22
(puerto predeterminado para SSH ) - Nombre de usuario:
my_username
- Contraseña:
my_password
Parámetros de la base de datos:
- Puerto:
5432
(puerto predeterminado de postgresql ) - Nombre de la base de datos:
db
- Usuario de la base de datos:
postgres_user
(el nombre de usuario predeterminado espostgres
) - Contraseña de la base de datos:
postgres_pswd
(la contraseña predeterminada es una cadena vacía ) - Tabla con nuestros datos:
MY_TABLE
Ahora, queremos conectarnos a esta base de datos de nuestro lado y cargar datos en un DataFrame de pandas:
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()