国外课栈 - 跨学科知识视角栈

构建Python pandas基于SSH远程MySQL和PostgreSQL的数据分析

 二维码 121
文章附图

背景知识视频教程

如果您无法从外部环境直接访问数据库,则可能需要SSH隧道来查询它。 在这篇文章中,我将向您展示如何通过SSH连接并查询MySQL数据库到Pandas数据框。 可以将相同的代码应用于连接到其他数据库,例如PostgreSQL。

假设您的数据库托管在52.xx.xx.xx上,并且您具有以下用户和私钥:

# ssh variables
host =
'52.xx.xx.xx'
localhost =
'127.0.0.1'
ssh_username =
'ubuntu'
ssh_private_key =
'/path/to/key.pem'

SSH进入环境后,我们需要一个用户名和密码来连接到名为“数据库”的数据库:

# database variables
user=
'user'
password=
'verysecurepassword'
database=
'database'

要将所有这些转换为可以从Python代码调用的一个函数,我们可以使用sshtunnel软件包,您可以使用pip获得该软件包:

pip install sshtunnel

然后导入SSHTunnelForwarder,MySQLdb和pandas:

from sshtunnel import SSHTunnelForwarder
import MySQLdb as db
import pandas as pd

要导入MySQLdb,您需要先安装MySQL-python。您可以用Psycopg代替MySQLdb对PostgreSQL做同样的事情。

备注:目前不推荐使用MySQLdb和Psycopg,出于介绍目的。推荐使用MySQL connector/Python和Psycopg2。

现在,我们将使用SSHTunnelForwarder创建一个隧道,连接到数据库,进行查询并以Pandas数据帧的形式返回结果。查询后关闭连接和SSH隧道。

</>...

read_sql_query方便地将您的SQL查询作为字符串以及刚刚建立的与数据库的连接,并从表格数据中创建数据框。

现在,您可以简单地查询数据库:

</>...

输出:

MySQL connector/Python访问MySQL

Python使用Psycopg2访问PostgreSQL

阅读完整文档