Executando verificação de segurança...
1

[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?

Carregando publicação patrocinada...
1

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

1

Show, consegui desembolar algo parecido na tarde de hoje, achei uma forma de puxar os dados em tempo real através de script no python. Puxa e cria um DataFrame a cada segundo, agora preciso que esse DataFrame seja inserido no Banco2, através de algum estudo em cima do sqlalchemy encontrei algo como to_sql para jogar através de um "INSER INTO" no Banco2, amanhã tentarei terminar o script, logo disponibilizarei por inteiro aqui.
O script de consulta ficou assim:

`
#Deixei alguns prints no meio do caminho para poder observar a execução.

import pymssql
import pandas as pd
import time

i = 0

conn = pymssql.connect(
host=r'endereço_ip:porta',
user=r'usuário',
password=r'senha',
database='Nome_do_Banco'
)

#Estabelecendo conexão...
print('Conectou!')
cursor = conn.cursor(as_dict=True)

print('Iniciando SELECT no banco 1!')
while i == 0:
time.sleep(1)
#O loop com sleep é para realizar a busca a cada segundo.
cursor.execute('''
SELECT tal, tal, tal
FROM tal, tal, tal
''')
print('SELECT realizado com sucesso!')
data = cursor.fetchall()
data_df = pd.DataFrame(data)
print(data_df)
cursor.close()
#Através disso, busco e atualizo o DataFrame do pandas a cada segundo.
`

0

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()