sql >> Base de Datos >  >> RDS >> Mysql

SQLAlchemy a través de Paramiko SSH

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 es postgres )
  • 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()