Thursday, 16 August 2018

Flask + SQLAlchemy: Load database with records by running python script

I'm trying to load my database ONCE with SQLALchemy in a flask app. I thought i could add the records to the database by running a script from the terminal command, but it seems that i'm having difficulties executing the python script?

  • Does initializing the app by running "export FLASK_APP=app/init.py" then "flask run" even loads the database?
  • Does starting up the local server each time re

folder structure:

  app
    api
      __init__.py
      log.py
    tasks
      __init__.py
      test.py
    __init__.py
    models.py
    utils.py

app/api/log.py

from app import app
from app.models import Race, db
from app.utils  import * 

def historical_records():
    df_races, df_circuits, constructors, df_drivers, df_results = extract_to_df_race('results', seasons, races_round)
    # Check if row exists in table
    exists = db.session.query(db.exists().scalar())
    if exists is None:
        df_races, df_circuits, constructors, df_drivers, df_results = extract_to_df_race('results', seasons, races_round)
        save_races_to_db(df_races, db)
    else:
        print("The database already contains data of 2016 to current race")

def save_races_to_db(df_races, db):
    for idx,row in df_races.iterrows():
        r = Race()
        r.url = df_races.loc[idx,"url"]
        r.season = df_races.loc[idx,"season"]
        r.raceName = df_races.loc[idx,"raceName"]
        db.session.add(r)
        try:
            db.session.commit()
        except Exception as e:
            db.session.rollback()
            print(str(e))


historical_records()

I activated the virtual environment, then executed "python app/api/log.py" but encountered this error:

  File "app/api/log.py", line 1, in <module>
    from app import app
ImportError: No module named app

Does initializing the app by running "export FLASK_APP=app/init.py" then "flask run" even loads the database?



from Flask + SQLAlchemy: Load database with records by running python script

No comments:

Post a Comment