Jump to content

Melhoria de Código Python


Douglas Michel Reis
Ir para a Solução Solucionado por Thanael,

Postagens Recomendadas

Salve, salve, galerinha.

Sou novato no Python, estou montando um código que copio os dados do banco Postgresql e gravo em um SQL Server.

A média de registros gira em torno de 250 a 290 mil registros.

Porém estou achando q fiz algo errado no código, onde essa cópia esta demorando 10 longos minutos e em alguns casos de 1,5 milhões de registro chega a demorar 1 hora.

Estou usando as bibliotecas básicas "pyodbc e psycopg2". 

A pergunta é existe outras bibliotecas q possa melhorar esse tempo?

Ou alguém indica uma literatura ou vídeo de tunning, melhoria de código ou qq coisa nesse sentido?

Obg.

  • Curtir 1
Link to comment
Compartilhe em outros sites

  • Pessoal da TecnoSpeed
  • Solução

Olá @Douglas Michel Reis tudo bem? 

Quando eu preciso realizar essas atividades geralmente utilizo a biblioteca Pandas para consultar, manipular e inserir dados nos respectivos banco de dados.

Na teoria isso que está tentando fazer não deveria demorar, vou lhe mandar uma estrutura de código para realizar isso ai você testa.

from sqlalchemy import create_engine # Criar a conexão com o PostgreSQL
import pyodbc
import pandas as pd

# Criar as conexões com os bancos
conexao_postgres = create_engine('postgresql://{user}:{password}@{host}:{port}/{db}'.format(
        user='xxx',
        password='xxx',
        host='xxx',
        port='xxx',
        db='xxx',
    ))

conexao_sql_server = pyodbc.connect(
        # Driver que será utilizado na conexão
        'DRIVER={ODBC Driver 17 for SQL Server};'
        # IP ou nome do servidor.
        'SERVER=192.168.100.178\SQLEXPRESS;'
        'PORT=1433;'
        # Banco que será utilizado.
        'DATABASE=PythonMSSQL;'
        'UID=xxx;'
        'PWD=xxx')

# Escrever o SQL
select = '''
    select * from tabela
'''

# Inserir no SQL SERVER
df = pd.read_sql(select, conexao_postgres)

df.to_sql('nome_da_tabela',conexao_sql_server, if_exists = 'replace', index = False)

Vou deixar também alguns links úteis que possam lhe ajudar.

  • pd.read_sql: Obter os dados do Banco de dados 
  • pd.to_sql: Inserir o DataFrame em um Banco de dados

Espero que isso possa lhe auxiliar, basicamente só precisa criar as conexões com os bancos e obter e inserir os dados através do Pandas (Biblioteca). 

Estou a disposição para lhe ajudar no que precisar.

  • Curtir 3
Link to comment
Compartilhe em outros sites

Crie uma conta ou entre para comentar 😀

Você precisa ser um membro para deixar um comentário.

Crie a sua conta

Participe da nossa comunidade, crie sua conta.
É bem rápido!

Criar minha conta agora

Entrar

Você já tem uma conta?
Faça o login agora.

Entrar agora


×
×
  • Create New...