Как объединить 2 таблицы из разных баз данных в SQLAlchemy? - PullRequest
0 голосов
/ 15 февраля 2019

Я использую python / SQLAlchemy для извлечения данных из баз данных MySQL.У меня есть 2 разных хоста, каждый с базой данных, и мне нужно объединить 2 таблицы (по одной на каждом хосте / базе данных).Как я могу это сделать?

Я читаю эту документацию , но я не мог получить прямую помощь.Подключиться к одной базе данных так же просто, как:

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

Но я не уверен, как я могу работать с двумя двигателями.

Кто-нибудь?Заранее спасибо.

1 Ответ

0 голосов
/ 15 февраля 2019

Вы можете использовать Панд в качестве клея между двумя базами данных.Например,

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 объединяет два DataFrames и возвращает DataFrame.

DataFrames также можно вставлять в базы данных в виде таблиц, используя метод to_sql .Например,

result.to_sql('tablename', engine_postgresql, if_exists='append')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...