[Como fazer] Uma API python que busca dados de um banco e insere em outro 'in real time'?
Caros amigos programadores,
Tenho uma solução para descobrir, a quest é a seguinte: tenho dois bancos de dados, de um lado, Máquina 1, tenho um SQL Server Express(que não possui a ferramenta Wizard integrada para enviar os dados para o banco receptor), e de outro lado, máquina 2, tenho um MongoDB ou um Mysql(não preciso que o banco seja especificamente relacional), as duas máquinas se encontram na rede. A máquina 1 gera os dados e armazena em local, preciso enviar esses dados para outro banco para armazenamento de dados e acessibilidade, dessa forma a máquina 1 terá seus dados apagados e será armazenando na máquina 2. Dito isso, com os dados salvos na máquina 2, os usúarios poderam acessar o banco para realizar alguns selects. Estou com dúvida de como realizar essa conexão entre os 2 bancos, talvez uma API poderia resolver, ou existe outra solução mais simples?
Fala Lucas, beleza?
Acho que um script para atualizar o banco 2 seria o caminho que eu seguiria. Colocaria um script rodando na máquina do banco 2 que faria uma busca nos novos dados (em 1) e faria um update no mesmo. Você pode fazer isso com python, faria uma query no banco 1 e 2 usando bibliotecas como o sqlalchemy, psycopg2, etc. Faz essa automação do script usando um cron mesmo
Resolvido! Segue o script, valeu amigos!!
import pymssql import pandas as pd import time import pymysql import mysql.connector from sqlalchemy import create_engine
i = 0
engine = create_engine('mysql+mysqlconnector://usuário:senha@end_IP:porta/nome_do_banco', echo=False) cnx = engine.raw_connection()
conn2 = pymssql.connect( host=r'end_IP', user=r'usuário', password=r'senha', database='nome_do_banco' )
cursor = conn2.cursor(as_dict=True)
while i == 0: time.sleep(1) cursor.execute(''' SELECT tal, tal, tal FROM tal ''') data = cursor.fetchall() data_df = pd.DataFrame(data) data_df.to_sql(name='Nome_da_tabela', con=engine, if_exists = 'append', index=False) cursor.close()