-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathload_data.py
More file actions
56 lines (49 loc) · 1.71 KB
/
load_data.py
File metadata and controls
56 lines (49 loc) · 1.71 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
# load_data.py
import os
import pandas as pd
from dotenv import load_dotenv
from sqlalchemy import create_engine
def get_connection_string():
"""
Carrega as variáveis de ambiente e retorna a connection string do MySQL.
Espera encontrar no .env:
MYSQL_USER
MYSQL_PASSWORD
MYSQL_HOST (opcional, padrão 'localhost')
MYSQL_PORT (opcional, padrão '3306')
MYSQL_DATABASE
"""
load_dotenv()
MYSQL_USER = os.getenv("MYSQL_USER")
MYSQL_PASSWORD = os.getenv("MYSQL_PASSWORD")
MYSQL_HOST = os.getenv("MYSQL_HOST", "localhost")
MYSQL_PORT = os.getenv("MYSQL_PORT", "3306")
MYSQL_DATABASE = os.getenv("MYSQL_DATABASE")
assert MYSQL_USER and MYSQL_PASSWORD and MYSQL_DATABASE, (
"⚠️ Defina MYSQL_USER, MYSQL_PASSWORD e MYSQL_DATABASE no seu .env"
)
return (
f"mysql+pymysql://"
f"{MYSQL_USER}:{MYSQL_PASSWORD}"
f"@{MYSQL_HOST}:{MYSQL_PORT}/{MYSQL_DATABASE}"
)
def upload_csv_to_train(csv_path: str, table_name: str = "train"):
"""
Lê o CSV e grava na tabela MySQL.
- csv_path: caminho para o arquivo CSV (ex: "data/ready/train.csv")
- table_name: nome da tabela no MySQL (padrão: "train")
Usa if_exists="replace" para recriar a tabela do zero.
"""
conn_str = get_connection_string()
engine = create_engine(conn_str)
df = pd.read_csv(csv_path)
df.to_sql(
name=table_name,
con=engine,
if_exists="replace", # recria a tabela a cada execução
index=False
)
print(f"Tabela '{table_name}' carregada com {len(df)} linhas.")
if __name__ == "__main__":
csv_path = "data/ready/train.csv"
upload_csv_to_train(csv_path, table_name="train")