Mysql
 sql >> Database >  >> RDS >> Mysql

SQLAlchemy tramite Paramiko SSH

Nel caso ci sia qualcuno interessato a connettersi a un Postgresql remoto database tramite SSH e desidera caricare i dati in un Panda DataFrame ecco come farlo.

Supponiamo di aver installato un database postgresql su un server remoto, a cui possiamo eseguire ssh con i seguenti parametri.

Parametri SSH:

  • IP del server:10.0.0.101
  • Porta SSH:22 (porta predefinita per SSH )
  • Nome utente:my_username
  • Password:my_password

Parametri del database:

  • Porta:5432 (porta predefinita postgresql )
  • Nome database:db
  • Utente database:postgres_user (il nome utente predefinito è postgres )
  • Password del database:postgres_pswd (la password predefinita è una stringa vuota )
  • Tabella con i nostri dati:MY_TABLE

Ora, vogliamo connetterci a questo database da parte nostra e caricare i dati in un DataFrame panda:

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()