Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

SQLAlchemy através do Paramiko SSH


Caso haja alguém interessado em se conectar a um Postgresql remoto banco de dados via SSH e deseja carregar dados em um pandas DataFrame aqui está como fazê-lo.

Suponha que tenhamos instalado um banco de dados postgresql em um servidor remoto, para o qual podemos ssh pelos seguintes parâmetros.

Parâmetros SSH:
  • IP do servidor:10.0.0.101
  • Porta SSH:22 (porta padrão para SSH )
  • Nome de usuário:my_username
  • Senha:my_password

Parâmetros do banco de dados:
  • Porta:5432 (porta padrão do postgresql )
  • Nome do banco de dados:db
  • Usuário do banco de dados:postgres_user (nome de usuário padrão é postgres )
  • Senha do banco de dados:postgres_pswd (a senha padrão é uma string vazia )
  • Tabela com nossos dados:MY_TABLE

Agora, queremos nos conectar a esse banco de dados do nosso lado e carregar os dados em um DataFrame do 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()