api_search_articles / script /create_dataset.py
Loren's picture
Upload 5 files
040fa4e verified
raw
history blame
1.85 kB
##############################################################################################
### Script de création des fichiers Parquet compressés à partir de la base de données SQLite
### et upload dans un nouveau dataset HF : Loren/articles_database
### 👉 Peuvent alors être utilisés par un space Hugging Face
##############################################################################################
import sqlite3
import pandas as pd
from pathlib import Path
from huggingface_hub import upload_file
import os
from dotenv import load_dotenv
# Initialisations
print("Initialisations ...")
load_dotenv()
HF_TOKEN = os.environ["API_HF_TOKEN"]
DATA_DIR = Path("../../Data") # dossier local contenant articles.db
SQLITE_FILE = DATA_DIR / "articles.db"
REPO_ID = "Loren/articles_database" # nouveau dataset HF
# Connexion SQLite
conn = sqlite3.connect(SQLITE_FILE)
# Extraction des tables et conversion en Parquet compressé
print("Création des fichiers Parquet compressés ...")
tables = ["articles", "tags", "tag_article"]
parquet_dir = DATA_DIR / "parquet_tables"
parquet_dir.mkdir(exist_ok=True)
parquet_files = []
for table in tables:
df = pd.read_sql_query(f"SELECT * FROM {table}", conn)
parquet_path = parquet_dir / f"{table}.parquet"
df.to_parquet(parquet_path, engine="pyarrow", index=False, compression="snappy")
parquet_files.append(parquet_path)
conn.close()
# Upload des fichiers Parquet vers HF
print("Upload des fichiers Parquet vers HF ...")
for parquet_file in parquet_files:
print(f"Uploading {parquet_file.name} ...")
upload_file(
path_or_fileobj=parquet_file,
path_in_repo=parquet_file.name,
repo_id=REPO_ID,
repo_type="dataset",
token=HF_TOKEN
)
print("Upload terminé ✅")