我的服务器上有一个数据库,我需要通过 SSH 访问该数据库。现在我通过使用命令行来获取数据来处理数据库。
import paramiko
ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh.connect(hostname='XX.XX.XX', username='user', password='pass', port = YYY)
query = "mysql -u " + username_sql + " -p" + password_sql +" dbb -e \"" + sql_query + "\""
ssh.exec_command(query.decode('string_escape'))
ssh.close()
有没有办法使用 SQLAlchemy 来提高效率,以便我可以直接使用 pandas DataFrames?
from sqlalchemy import create_engine
engine = create_engine(
"mysql://username_sql:password_sql@localhost/dbb")
如果有人有兴趣连接到远程PostgreSQL通过 SSH 访问数据库并希望将数据加载到熊猫数据框以下是具体操作方法。
假设我们在远程服务器上安装了 postgresql 数据库,我们可以通过以下参数 ssh 到该数据库。
SSH 参数:
- 服务器的ip:
10.0.0.101
- SSH 端口:
22
(SSH 的默认端口)
- 用户名:
my_username
- 密码:
my_password
数据库参数:
- Port:
5432
(postgresql默认端口)
- 数据库名称:
db
- 数据库用户:
postgres_user
(默认用户名是postgres
)
- 数据库密码:
postgres_pswd
(默认密码是空字符串)
- 包含我们数据的表格:
MY_TABLE
现在,我们想要连接到我们的数据库并将数据加载到 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()
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)