Au cas où quelqu'un serait intéressé à se connecter à un Postgresql distant base de données via SSH et souhaite charger des données dans un pandas DataFrame voici comment procéder.
Supposons que nous ayons installé une base de données postgresql sur un serveur distant, auquel nous pouvons nous connecter via les paramètres suivants.
Paramètres SSH :
- IP du serveur :
10.0.0.101
- Port SSH :
22
(port par défaut pour SSH ) - Nom d'utilisateur :
my_username
- Mot de passe :
my_password
Paramètres de la base de données :
- Port :
5432
(port postgresql par défaut ) - Nom de la base de données :
db
- Utilisateur de la base de données :
postgres_user
(le nom d'utilisateur par défaut estpostgres
) - Mot de passe de la base de données :
postgres_pswd
(le mot de passe par défaut est une chaîne vide ) - Table avec nos données :
MY_TABLE
Maintenant, nous voulons nous connecter à cette base de données de notre côté et charger les données dans un pandas DataFrame :
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()