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

标签 python sqlalchemy

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

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

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

但我不确定如何使用两个引擎。

有人吗?提前致谢。

最佳答案

你可以使用 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'])

pd.read_sql将 SQL 查询传递给数据库并返回一个 DataFrame。 pd.merge连接两个 DataFrame 并返回一个 DataFrame。

DataFrame 也可以使用 to_sql method 作为表格插入到数据库中.例如,

result.to_sql('tablename', engine_postgresql, if_exists='append')

关于python - 如何在 SQLAlchemy 中连接来自不同数据库的 2 个表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54715244/

相关文章:

python - 使用 pandas 和 SQLAlchemy 外部访问 pythonanywhere MySQL 数据库

mysql - 使用 Unicode 字符将 Pandas DataFrame 导出到 MySQL

python - Flask-SQLAlchemy:没有外键链接这些表

python /心理 : checking if a point is within a circle

python - Django 文件上传

python - SQLAlchemy 对 postgresql 插入可伸缩性的独特检查

python - SQLALCHEMY 忽略查询中的重音

python - 通过 Python iLO REST 客户端连接到 HPE iLO 5 时出现 RetriesExhaustedError

python - 如何实现 __delitem__ 来处理所有可能的切片场景?

python - 如何在 Python 3 中找出 .pyc header 的魔数(Magic Number)