I have the following code:
__author__ = 'Jones_Santos'
# !/usr/bin/python3
import os
from __init__ import mycursor, connection
import csv
import os
from datetime import datetime, date, timedelta, datetime
# Caminho do arquivo a ser importado
caminho_arquivo = './arquivos/analitico_carga_aedu_FC_17122017.csv'
nome_arquivo = os.path.basename('./arquivos/analitico_carga_aedu_FC_17122017.csv')
# ----------- Insere o nome do arquivo que está sendo importado no banco de dados
def inserir_nome_arquivo():
data_importacao = datetime.now().date()
query_inserir_nome_arquivo = ("INSERT IGNORE INTO arquivo "
"(nome_arquivo, data_import) "
"VALUES (%(nome_arquivo)s, %(data_import)s)")
dados_nome_arquivo = {
'nome_arquivo': nome_arquivo,
'data_import': data_importacao,
}
mycursor.execute(query_inserir_nome_arquivo, dados_nome_arquivo)
connection.commit()
query = 'SELECT id_arquivo FROM arquivo WHERE nome_arquivo = %(nome_arquivo)s'
criterios = {
'nome_arquivo': nome_arquivo,
}
mycursor.execute(query, criterios)
for id_arquivo in mycursor:
id_arquivos = int(("{}".format(id_arquivo).replace(',', '').replace('(', '').replace(')', '')))
def ler_e_inserir_arquivo_batimento():
with open(caminho_arquivo, newline='', encoding="latin-1") as arquivo:
conteudo = csv.reader(arquivo, delimiter=';')
next(conteudo, None)
for linha in conteudo:
vr_parc = linha[8].replace(',', '.')
menor_vcto = linha[2]
query_sql_batimento = (
"INSERT INTO batimento(id_arquivo,operacao,fase,menor_vcto,cpfcgc_pes,parcelado_tit,contrato_tit,"
"compl_parc,numero_parc,vr_parc,vcto_parc,cod_unidade,pep)" "VALUES (%(id_arquivo)s,%(operacao)s, "
"%(fase)s,%(menor_vcto)s,%(cpfcgc_pes)s, %(parcelado_tit)s, %(contrato_tit)s,%(compl_parc)s,"
"%(numero_parc)s,%(vr_parc)s,%(vcto_parc)s,%(cod_unidade)s,%(pep)s) "
)
dados_sql_batimento = {
'id_arquivo': id_arquivos,
'operacao': linha[0],
'fase': linha[1],
'menor_vcto': datetime.strptime(menor_vcto[0:10], "%d/%m/%Y").strftime("%Y-%m-%d"),
'cpfcgc_pes': linha[3],
'parcelado_tit': linha[4],
'contrato_tit': linha[5],
'compl_parc': linha[6],
'numero_parc': linha[7],
'vr_parc': float(vr_parc),
'vcto_parc': datetime.strptime(linha[9], "%d/%m/%Y").strftime("%Y-%m-%d"),
'cod_unidade': linha[10],
'pep': linha[11],
}
print(dados_sql_batimento)
mycursor.execute(query_sql_batimento, dados_sql_batimento)
connection.commit()
inserir_nome_arquivo()
ler_e_inserir_arquivo_batimento()
connection.close()
As you can see, I read the files and insert into my Mysql database, but I always have to keep changing the filename with each new import. I want to know how to import the files as soon as they are saved in the folder. Example:
file1.csv
if file1.csv has already been imported:
Do not do anything
if not: import the file
I already store the file names that are imported into the database:
# ----------- Insere o nome do arquivo que está sendo importado no banco de dados
def inserir_nome_arquivo():
data_importacao = datetime.now().date()
query_inserir_nome_arquivo = ("INSERT IGNORE INTO arquivo "
"(nome_arquivo, data_import) "
"VALUES (%(nome_arquivo)s, %(data_import)s)")
dados_nome_arquivo = {
'nome_arquivo': nome_arquivo,
'data_import': data_importacao,
}
mycursor.execute(query_inserir_nome_arquivo, dados_nome_arquivo)
connection.commit()
For now I'm screwed in this part. Check if I already imported the file, if I did not import it, I would import it.
Question: Is there a way to let python "sweep" the folder for a new file?