Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 6 additions & 0 deletions src/database.ini
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
[postgresql]
host=localhost
database=pokemon
user=postgres
password=postgres
port = 5432
3 changes: 3 additions & 0 deletions src/extract_data.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
from utils import extract_to_csv

extract_to_csv()
13 changes: 13 additions & 0 deletions src/load.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
from utils import save_in_db
from sqlalchemy import create_engine
import configparser

config = configparser.ConfigParser()
config.read('database.ini')
db_params = config['postgresql']

db_url = f"postgresql://{db_params['user']}:{db_params['password']}@{db_params['host']}:{db_params['port']}/{db_params['database']}"
engine = create_engine(db_url, echo=True)

save_in_db()

22 changes: 15 additions & 7 deletions src/utils.py
Original file line number Diff line number Diff line change
@@ -1,16 +1,17 @@
from constants import COLUMNS_LIST, GENERATION
import requests
import pandas as pd
import numpy as np
from concurrent.futures import ThreadPoolExecutor
from sqlalchemy import create_engine
from pathlib import Path
import pandas as pd
import configparser
import requests


def fetch_data(index):
res = requests.get(f'https://pokeapi.co/api/v2/pokemon/{index}').json()
dic = {x: res[x] for x in COLUMNS_LIST}
values = np.array(list(dic.values())).reshape(1, 6)
df = pd.DataFrame((values), columns=list(dic.keys()))
return df

return dic

def transform_data():
data_list = []
with ThreadPoolExecutor(max_workers=10) as executor:
Expand All @@ -20,3 +21,10 @@ def transform_data():
df = pd.DataFrame(data_list)
return df

def extract_to_csv():
filepath = Path('../data/exctract.csv')
filepath.parent.mkdir(parents=True, exist_ok=True)
return transform_data().to_csv(filepath, index=False)

def save_in_db():
return transform_data().to_sql('pokemons', engine, if_exists='replace', index=False)