Created
December 21, 2017 15:05
-
-
Save kylefelipe/f2d1cdfc465792d19da88b6fb3d6aa9f to your computer and use it in GitHub Desktop.
gera sql genérico de insert de dados de uma tabela em outra
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
def sql_insert(tab_origem, tab_destino): | |
"""Gera um SQL de insert no BD genérico, tem de definir a conexão com o BD | |
A ordem das colunas de destino devem estar na mesma ordem da coluna de origem""" | |
cur = conn.cursor() | |
# Caso vá buscar dados de uma tabela e inserir em outra essa variável deverá receber o nome da tabela | |
tab_origem = "" | |
# Pegando as colunas da tabela origem | |
origem = cur.execute("PRAGMA table_info({0});".format(tab_origem)) | |
# Pegando as colunas da tabela origem | |
pragma_origem = [i[1] for i in origem] | |
# Pegando as colunas da tabela de destino | |
destino = cur.execute("PRAGMA table_info({0});".format(tab_destino)) | |
# Pegando as colunas da tabela de destino | |
# O i[1] faz com que o código pegue apenas os nomes das colunas que retorna no PRAGMA do DESTINO | |
pragma_destino = [i[1] for i in destino] | |
# Montando a linha do SQL com o nome das colunas de destino no padrão COLUNA1, COLUNA2, COLUNAN...... | |
# pragma_destino[1:] faz com que o codigo pule a primeira coluna, caso queira inserir ela, basta remover o [1:] | |
colunas_destino = ", ".join(pragma_destino[1:]) | |
# Pega a quantidade de colunas a serem inseridas na tabela de destino | |
qt_colunas = len(pragma_destino) | |
# Pegando as colunas da planilha origem | |
# Montando a linha do SQL com o nome das colunas de destino no padrão COLUNA1, COLUNA2, COLUNAN...... | |
# pragma_origem[1:] faz com que o codigo pule a primeira coluna, caso queira inserir ela, basta remover o [1:] | |
colunas_origem = ", ".join(pragma_origem[1:qt_colunas]) | |
# Montando o SQL de inserção dos dados na tabela de destino | |
print "Inserindo os dados da tabela virtual {tab_origem} na tabela {tab_destino}.".format(tab_origem=tab_origem, | |
tab_destino=tab_destino) | |
sql = """ | |
INSERT INTO {tabela_destino}({colunas_destino}) | |
SELECT {colunas_origem} | |
FROM {tab_origem}; | |
""".format(tabela_destino=tab_destino, colunas_destino=colunas_destino, | |
colunas_origem=colunas_origem, tab_virtual=tab_origem) | |
cur.execute(sql) | |
conn.commit() |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment