python 3,使用panda的sql查询的ssh隧道不工作

python 3,使用panda的sql查询的ssh隧道不工作,python,mysql,pandas,Python,Mysql,Pandas,使用ssh连接从mysql数据库获取结果时遇到问题。 sql语句是正确的,但是为什么我没有任何数据呢 from sshtunnel import SSHTunnelForwarder import MySQLdb as db import pandas as pd from pandas import DataFrame # ssh variabler host = "192.168.99.101" localhost = "127.0.0.1" ssh_username = "user"

使用ssh连接从mysql数据库获取结果时遇到问题。 sql语句是正确的,但是为什么我没有任何数据呢

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


# ssh variabler
host = "192.168.99.101"
localhost = "127.0.0.1"
ssh_username = "user"
ssh_password = "password"
ssh_private_key = '/path/to/key.pem'


# databas variabler
user = "user"
password = "password"
database = "database"


def query(q):
    with SSHTunnelForwarder(
            (host, 22),
            ssh_username=ssh_username,
            ssh_password = ssh_password,
            remote_bind_address=(localhost, 3306)
    ) as server:
        conn = db.connect(host=localhost,
                          port=server.local_bind_port,
                          user=user,
                          passwd=password,
                          db=database)
        return pd.read_sql_query(q, conn)

begin ="""2018-01-03"""
end = """2018-01-04"""

#run sql query
sql = """select collection_type,sum(order_amount) from pz_orders where order_date between {} and {} and print = 'y' group by collection_type""".format(början,slut)
df = query(sql)

print(df)
我从return from print语句中得到的是,它应该返回一些数字

Empty DataFrame
Columns: [collection_type, sum(order_amount)]
Index: [] 

我认为您需要在ssh隧道中使用paramiko密钥:

import paramiko
localhost = "127.0.0.1"
ssh_username = "user"
ssh_password = "password"
ssh_private_key = '/path/to/key.pem'

pkey = paramiko.RSAKey.from_private_key_file(ssh_private_key, password=ssh_password)

# databas variabler
user = "user"
password = "password"
database = "database"


def query(q):
    # use ssh_pkey instead of ssh_password
    with SSHTunnelForwarder(
            (host, 22),
            ssh_username=ssh_username,
            ssh_pkey = pkey,
            remote_bind_address=(localhost, 3306)
    ) as server:
        conn = db.connect(host=localhost,
                          port=server.local_bind_port,
                          user=user,
                          passwd=password,
                          db=database)
        return pd.read_sql_query(q, conn)

begin ="""2018-01-03"""
end = """2018-01-04"""

#run sql query
sql = """select collection_type,sum(order_amount) from pz_orders where order_date between {} and {} and print = 'y' group by collection_type""".format(början,slut)
df = query(sql)

print(df)

我有相同的问题,我连接,但我的查询不会返回,无论多么简单。