使用SSH将Pandas Dataframe写入MYSQL数据库

帕罗夫奇

问题

我想使用pandas to_sql将数据帧写入MYSQL表。但是,我的连接需要SSH

我尝试过的

我有一个成功的连接可以使用pymysql执行查询,但是能够直接使用诸如to_sql之类的函数将使我的生活变得更加轻松,能够直接像这样推送数据。请参阅以下我正在使用的代码。

from sshtunnel import SSHTunnelForwarder
import pymysql as db
import pandas as pd
import numpy as np

host = 'host'
localhost = 'localhost'
ssh_username = 'ssh_username'
private_key = '/path/'

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

#query function that works for pulling from database
def query(q):
    with SSHTunnelForwarder(
        (host, 22),
        ssh_username=ssh_username,
        ssh_private_key=private_key,
        ssh_private_key_password="password",
        remote_bind_address=(localhost, port)
    ) 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)

# What you need to for to_sql
 conn = db.connect(host=host,
                        port=port,
                        user=user, 
                        password=password,  
                        db=database)

# test df
np.random.seed(0)
number_of_samples = 10
frame = pd.DataFrame({
'feature1': np.random.random(number_of_samples),
'feature2': np.random.random(number_of_samples),
'class':    np.random.binomial(2, 0.1, size=number_of_samples),
},columns=['feature1','feature2','class'])

# to_sql
frame.to_sql(con=conn, name='test_table', if_exists='replace', flavor='mysql')

也许还有其他东西吗?

我正在考虑将数据框转换为CSV文件,然后将其导入数据库如果您有任何线索如何在SSH中使用to_sql之类的信息,请告诉我。

帕罗夫奇

我最终使用本地端口转发来解决此问题。

这是我在终端中用于本地端口转发的内容:

ssh -N -v SSH_user@SSH_host -L3306:127.0.0.1:3306

我使用sqlalchemy进行连接:

from sqlalchemy import create_engine

engine = create_engine("mysql://user:[email protected]:3306/db?charset=utf8"
df.to_sql(con=engine, name='test_table', if_exists='replace')

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何将多个DataFrame写入MySQL数据库?

使用SQLAlchemy,to_sql用熊猫写入MySQL数据库

使用SqlAlchemy和cx_Oracle将Pandas DataFrame写入Oracle数据库时,加快to_sql()的速度

在数据库的整数列中使用Nan将数据写入数据库

如何使用to_sql将pandas数据框写入oracle数据库?

使用PYODBC从Pandas写入SQL Server数据库

将列表从数据库写入PDF

将JSON写入MYSQL数据库时,SQL语法中的PYTHON错误

将Pandas数据框写入AWS Athena数据库

如何将Pandas DataFrame直接写入Netezza数据库?

将Pandas DataFrame写入现有的MySQL数据库表

使用foreach将数据写入Access数据库

使用dialogflow将多个参数写入firestore数据库

使用Pandas Dataframe转换数据库

将大数据表写入mysql数据库C#

将MATLAB图形以PNG,JPG格式写入MySQL数据库

如何使用Java向MySQL数据库写入(更新)日期?

如何使用log4j将日志写入Jmeter上的mysql数据库?

C#DateTime.Now无法将正确的时间写入MySql数据库

如何使用条件写入数据库?

无法将数据写入数据库

我无法使用 jdbc 将 Spark DataFrame 写入数据库

可以从 mysql 数据库读取数据但不能将数据写入数据库在 Ubuntu 16.04 上使用 PHP 5.6?

将txt文件写入mySQL数据库

使用 df.to_sql() 将数据块写入数据库时出现 Pandas 错误

无法使用 Azure 函数将值写入数据库

使用 Python 在 Pi 启动时写入 MySQL 数据库

Python Pandas MySQL - 为什么在将数据帧写入数据库时 SQLite 速度如此之快

MySQL 中的并行写入。如何使用 Python mysql.connector 将流条目写入 MySQL 数据库中的 100 个不同表