Mysql
 sql >> Datenbank >  >> RDS >> Mysql

SQLAlchemy über Paramiko SSH

Falls jemand daran interessiert ist, sich mit einem entfernten Postgresql zu verbinden Datenbank über SSH und möchte Daten in einen pandas DataFrame laden So geht's.

Angenommen, wir haben eine Postgresql-Datenbank auf einem entfernten Server installiert, zu der wir mit den folgenden Parametern ssh können.

SSH-Parameter:

  • IP des Servers:10.0.0.101
  • SSH-Port:22 (Standardport für SSH )
  • Benutzername:my_username
  • Passwort:my_password

Datenbankparameter:

  • Port:5432 (postgresql-Standardport )
  • Datenbankname:db
  • Datenbankbenutzer:postgres_user (Standardbenutzername ist postgres )
  • Datenbankpasswort:postgres_pswd (Standardkennwort ist eine leere Zeichenfolge )
  • Tabelle mit unseren Daten:MY_TABLE

Jetzt wollen wir uns auf unserer Seite mit dieser Datenbank verbinden und Daten in einen pandas DataFrame laden:

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