如何在SQLAlchemy中联接来自不同数据库的2个表?

2024-04-25 01:45:32 发布

您现在位置:Python中文网/ 问答频道 /正文

我使用python/SQLAlchemy从MySQL数据库中提取数据。我有两个不同的主机,每个主机都有一个数据库,我需要连接两个表(每个主机/数据库中一个)。我该怎么做?在

我正在读this documentation,但是我没有得到任何直接的帮助。连接到一个数据库非常简单:

engine = create_engine('mysql+pymysql://user:pass@host/database')

但我不确定我怎么能用两个引擎工作。在

有人吗?提前谢谢。在


Tags: 数据引擎数据库hostsqlalchemydocumentationcreatemysql
1条回答
网友
1楼 · 发布于 2024-04-25 01:45:32

您可以使用Pandas作为两个数据库之间的粘合剂。例如

import config
import pandas as pd
import sqlalchemy as SA

engine_postgresql = SA.create_engine('postgresql+psycopg2://{u}:{p}@{h}/{d}'.format(
    u=PGUSER, p=PGPASS, h=PGHOST, d='pgtest'))
engine_mysql = SA.create_engine('mysql+mysqldb://{u}:{p}@{h}/{d}'.format(
    u=MYUSER, p=MYPASS, h=MYHOST, d='mytest'))

sql = 'SELECT col1, col2, col3 FROM tableA'
df1 = pd.read_sql(sql, con=engine_postgresql)
sql = 'SELECT col1, col2, col4 FROM tableB'
df2 = pd.read_sql(sql2, con=engine_mysql)

result = pd.merge(df1, df2, how='left', on=['col1', 'col2'])

^{}向数据库传递SQL查询并返回一个数据帧。 pd.merge联接两个数据帧并返回一个数据帧。在

也可以使用^{} method将数据帧作为表插入数据库。例如

^{pr2}$

相关问题 更多 >