rwayz commited on
Commit
c579dc3
·
1 Parent(s): 0441e1c

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +52 -10
app.py CHANGED
@@ -58,16 +58,58 @@ def get_active_csv_path():
58
  logging.info(f"[CSV] Usando arquivo CSV padrão: {DEFAULT_CSV_PATH}")
59
  return DEFAULT_CSV_PATH
60
 
61
- def create_engine_and_load_db(csv_path, sql_db_path):
62
- logging.info(f"[ENGINE] Criando engine com CSV: {csv_path}")
63
- engine = create_engine(f"sqlite:///{sql_db_path}")
64
- df = pd.read_csv(csv_path, sep=";", on_bad_lines="skip")
65
- print("[DEBUG] Tipos das colunas:")
66
- print(df.dtypes)
67
- df.to_sql("tabela", engine, index=False, if_exists="replace")
68
- logging.info(f"[ENGINE] Banco criado com sucesso com {len(df)} linhas e {len(df.columns)} colunas")
69
-
70
- return engine
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
71
 
72
  def handle_csv_upload(file):
73
  global engine, db, sql_agent
 
58
  logging.info(f"[CSV] Usando arquivo CSV padrão: {DEFAULT_CSV_PATH}")
59
  return DEFAULT_CSV_PATH
60
 
61
+ def create_or_load_sql_database(csv_path, sql_db_path):
62
+ if os.path.exists(sql_db_path):
63
+ print("Banco de dados SQL já existe. Carregando...")
64
+ return create_engine(f"sqlite:///{sql_db_path}")
65
+ else:
66
+ print("Banco de dados SQL não encontrado. Criando...")
67
+ engine = create_engine(f"sqlite:///{sql_db_path}")
68
+
69
+ df = pd.read_csv(
70
+ csv_path,
71
+ sep=";",
72
+ encoding='utf-8',
73
+ parse_dates=["DATA_INICIAL_TABLOIDE_PROMOCAO_ANUNCIO", "DATA_FINAL_TABLOIDE_PROMOCAO_ANUNCIO"],
74
+ dayfirst=True,
75
+ on_bad_lines="skip"
76
+ )
77
+
78
+ colunas_para_float = [
79
+ "PRECO", "PRECO_SEM_DESCONTO"
80
+ ]
81
+
82
+ colunas_para_int = [
83
+ "QUANTIDADE_DIAS_VALIDADE_TABLOIDE_PROMOCAO_ANUNCIO", "TOTAL_PAGINAS_TABLOIDE_PROMOCAO_ANUNCIO", "MEDIDA_PRODUTO_SKU"
84
+ ]
85
+
86
+ for col in colunas_para_float:
87
+ if col in df.columns:
88
+ df[col] = pd.to_numeric(df[col].replace("-", None), errors="coerce")
89
+
90
+ for col in colunas_para_int:
91
+ if col in df.columns:
92
+ df[col] = pd.to_numeric(df[col].replace("-", None), errors="coerce")
93
+ df[col] = df[col].where(df[col].dropna() == df[col].dropna().astype(int))
94
+ df[col] = df[col].astype("Int64")
95
+
96
+ sql_dtype = {
97
+ "DATA_INICIAL_TABLOIDE_PROMOCAO_ANUNCIO": DateTime(),
98
+ "DATA_FINAL_TABLOIDE_PROMOCAO_ANUNCIO": DateTime(),
99
+ "QUANTIDADE_DIAS_VALIDADE_TABLOIDE_PROMOCAO_ANUNCIO": Integer(),
100
+ "PRECO": Float(),
101
+ "PRECO_SEM_DESCONTO": Float(),
102
+ "TOTAL_PAGINAS_TABLOIDE_PROMOCAO_ANUNCIO": Integer(),
103
+ "MEDIDA_PRODUTO_SKU": Float(),
104
+
105
+ }
106
+
107
+ print("[DEBUG] Tipos das colunas:")
108
+ print(df.dtypes)
109
+
110
+ df.to_sql("base_dados_promocional_AUDITADA", engine, index=False, if_exists="replace", dtype=sql_dtype)
111
+ print("Banco de dados SQL criado com sucesso!")
112
+ return engine
113
 
114
  def handle_csv_upload(file):
115
  global engine, db, sql_agent