diff --git a/rowers/dataprep.py b/rowers/dataprep.py index d4430995..fe8c7dec 100644 --- a/rowers/dataprep.py +++ b/rowers/dataprep.py @@ -32,7 +32,6 @@ if settings.DEBUG or user=='': # database_url = 'sqlite:///db.sqlite3' database_url = 'sqlite:///'+database_name -engine = create_engine(database_url, echo=False) from scipy.signal import savgol_filter @@ -85,6 +84,7 @@ def rdata(file,rower=rrower()): return res def delete_strokedata(id): + engine = create_engine(database_url, echo=False) query = sa.text('DELETE FROM strokedata * WHERE workoutid={id};'.format( id=id, )) @@ -94,6 +94,7 @@ def delete_strokedata(id): except: print "Database Locked" conn.close() + engine.dispose() def testdata(time,distance,pace,spm): t1 = np.issubdtype(time,np.number) @@ -151,11 +152,14 @@ def getrowdata(id=0): def prepmultipledata(ids,verbose=False): query = sa.text('SELECT DISTINCT workoutid FROM strokedata') + engine = create_engine(database_url, echo=False) + with engine.connect() as conn, conn.begin(): res = conn.execute(query) res = list(itertools.chain.from_iterable(res.fetchall())) conn.close() - + engine.dispose() + res = list(set(ids)-set(res)) for id in res: rowdata,row = getrowdata(id=id) @@ -170,6 +174,8 @@ def read_cols_df_sql(ids,columns): columns = [x for x in columns if x != 'None'] columns = list(set(columns)) cls = '' + engine = create_engine(database_url, echo=False) + for column in columns: cls += column+', ' cls = cls[:-2] @@ -189,12 +195,17 @@ def read_cols_df_sql(ids,columns): )) df = pd.read_sql_query(query,engine) + engine.dispose() return df def read_df_sql(id): + engine = create_engine(database_url, echo=False) + df = pd.read_sql_query(sa.text('SELECT * FROM strokedata WHERE workoutid={id}'.format( id=id)), engine) + + engine.dispose() return df @@ -353,8 +364,9 @@ def dataprep(rowdatadf,id=0,bands=False,barchart=False,otwpower=False): # write data if id given if id != 0: data['workoutid'] = id + engine = create_engine(database_url, echo=False) with engine.connect() as conn, conn.begin(): data.to_sql('strokedata',engine,if_exists='append',index=False) conn.close() - + engine.dispose() return data diff --git a/rowers/models.py b/rowers/models.py index bbc415e9..16446319 100644 --- a/rowers/models.py +++ b/rowers/models.py @@ -31,7 +31,6 @@ database_url = 'mysql://{user}:{password}@{host}:{port}/{database_name}'.format( if settings.DEBUG or user=='': database_url = 'sqlite:///db.sqlite3' -engine = create_engine(database_url, echo=False) # Create your models here. class Team(models.Model): @@ -149,13 +148,15 @@ def auto_delete_strokedata_on_delete(sender, instance, **kwargs): query = sa.text('DELETE FROM strokedata WHERE workoutid={id};'.format( id=instance.id, )) + engine = create_engine(database_url, echo=False) with engine.connect() as conn, conn.begin(): try: result = conn.execute(query) except: print "Database Locked" conn.close() - + engine.dispose() + class StrokeData(models.Model): class Meta: db_table = 'strokedata'