From 2a36713b064777e5ca94975c5041bf447abf3f66 Mon Sep 17 00:00:00 2001 From: Chris Kerr Date: Fri, 3 May 2019 20:37:27 +0200 Subject: [PATCH] Fixed some flake8 warnings in res2sqlite.py --- galvani/res2sqlite.py | 71 ++++++++++++++++++++++++++----------------- 1 file changed, 43 insertions(+), 28 deletions(-) diff --git a/galvani/res2sqlite.py b/galvani/res2sqlite.py index 0234a7b..843129c 100755 --- a/galvani/res2sqlite.py +++ b/galvani/res2sqlite.py @@ -7,8 +7,8 @@ import csv import argparse -## The following scripts are adapted from the result of running -## $ mdb-schema oracle +# The following scripts are adapted from the result of running +# $ mdb-schema oracle mdb_tables = ["Version_Table", "Global_Table", "Resume_Table", "Channel_Normal_Table", "Channel_Statistic_Table", @@ -126,7 +126,8 @@ CREATE TABLE Channel_Statistic_Table -- Version 1.14 ends here, version 5.23 continues Charge_Time REAL DEFAULT NULL, Discharge_Time REAL DEFAULT NULL, - FOREIGN KEY (Test_ID, Data_Point) REFERENCES Channel_Normal_Table (Test_ID, Data_Point) + FOREIGN KEY (Test_ID, Data_Point) + REFERENCES Channel_Normal_Table (Test_ID, Data_Point) ); """, "Auxiliary_Table": """ CREATE TABLE Auxiliary_Table @@ -137,7 +138,8 @@ CREATE TABLE Auxiliary_Table Data_Type INTEGER, X REAL, "dX/dt" REAL, - FOREIGN KEY (Test_ID, Data_Point) REFERENCES Channel_Normal_Table (Test_ID, Data_Point) + FOREIGN KEY (Test_ID, Data_Point) + REFERENCES Channel_Normal_Table (Test_ID, Data_Point) ); """, "Event_Table": """ CREATE TABLE Event_Table @@ -220,7 +222,8 @@ CREATE TABLE Smart_Battery_Data_Table ChargingCurrent REAL DEFAULT NULL, ChargingVoltage REAL DEFAULT NULL, ManufacturerData REAL DEFAULT NULL, - FOREIGN KEY (Test_ID, Data_Point) REFERENCES Channel_Normal_Table (Test_ID, Data_Point) + FOREIGN KEY (Test_ID, Data_Point) + REFERENCES Channel_Normal_Table (Test_ID, Data_Point) ); """, ## The following tables are not present in version 1.14 'MCell_Aci_Data_Table': """ @@ -233,7 +236,8 @@ CREATE TABLE MCell_Aci_Data_Table Phase_Shift REAL, Voltage REAL, Current REAL, - FOREIGN KEY (Test_ID, Data_Point) REFERENCES Channel_Normal_Table (Test_ID, Data_Point) + FOREIGN KEY (Test_ID, Data_Point) + REFERENCES Channel_Normal_Table (Test_ID, Data_Point) );""", 'Aux_Global_Data_Table': """ CREATE TABLE Aux_Global_Data_Table @@ -288,7 +292,8 @@ CREATE TABLE Smart_Battery_Clock_Stretch_Table VCELL3 INTEGER, VCELL2 INTEGER, VCELL1 INTEGER, - FOREIGN KEY (Test_ID, Data_Point) REFERENCES Channel_Normal_Table (Test_ID, Data_Point) + FOREIGN KEY (Test_ID, Data_Point) + REFERENCES Channel_Normal_Table (Test_ID, Data_Point) );"""} mdb_create_indices = { @@ -306,18 +311,21 @@ CREATE TEMPORARY TABLE capacity_helper( Discharge_Capacity REAL NOT NULL, Charge_Energy REAL NOT NULL, Discharge_Energy REAL NOT NULL, - FOREIGN KEY (Test_ID, Cycle_Index) REFERENCES Channel_Normal_Table (Test_ID, Cycle_Index) + FOREIGN KEY (Test_ID, Cycle_Index) + REFERENCES Channel_Normal_Table (Test_ID, Cycle_Index) ); -INSERT INTO capacity_helper - SELECT Test_ID, Cycle_Index, max(Charge_Capacity), max(Discharge_Capacity), max(Charge_Energy), max(Discharge_Energy) - FROM Channel_Normal_Table +INSERT INTO capacity_helper + SELECT Test_ID, Cycle_Index, + max(Charge_Capacity), max(Discharge_Capacity), + max(Charge_Energy), max(Discharge_Energy) + FROM Channel_Normal_Table GROUP BY Test_ID, Cycle_Index; --- ## Alternative way of selecting ## --- select * --- from Channel_Normal_Table as a join Channel_Normal_Table as b --- on (a.Test_ID = b.Test_ID and a.Data_Point = b.Data_Point + 1 +-- ## Alternative way of selecting ## +-- select * +-- from Channel_Normal_Table as a join Channel_Normal_Table as b +-- on (a.Test_ID = b.Test_ID and a.Data_Point = b.Data_Point + 1 -- and a.Charge_Capacity < b.Charge_Capacity); DROP TABLE IF EXISTS Capacity_Sum_Table; @@ -328,12 +336,15 @@ CREATE TABLE Capacity_Sum_Table( Discharge_Capacity_Sum REAL NOT NULL, Charge_Energy_Sum REAL NOT NULL, Discharge_Energy_Sum REAL NOT NULL, - FOREIGN KEY (Test_ID, Cycle_Index) REFERENCES Channel_Normal_Table (Test_ID, Cycle_Index) + FOREIGN KEY (Test_ID, Cycle_Index) + REFERENCES Channel_Normal_Table (Test_ID, Cycle_Index) ); -INSERT INTO Capacity_Sum_Table - SELECT a.Test_ID, a.Cycle_Index, total(b.Charge_Capacity), total(b.Discharge_Capacity), total(b.Charge_Energy), total(b.Discharge_Energy) - FROM capacity_helper AS a LEFT JOIN capacity_helper AS b +INSERT INTO Capacity_Sum_Table + SELECT a.Test_ID, a.Cycle_Index, + total(b.Charge_Capacity), total(b.Discharge_Capacity), + total(b.Charge_Energy), total(b.Discharge_Energy) + FROM capacity_helper AS a LEFT JOIN capacity_helper AS b ON (a.Test_ID = b.Test_ID AND a.Cycle_Index > b.Cycle_Index) GROUP BY a.Test_ID, a.Cycle_Index; @@ -352,14 +363,17 @@ CREATE VIEW IF NOT EXISTS Capacity_View def mdb_get_data_text(s3db, filename, table): print("Reading %s..." % table) + insert_pattern = re.compile( + r'INSERT INTO "\w+" \([^)]+?\) VALUES \(("[^"]*"|[^")])+?\);\n', + re.IGNORECASE + ) try: mdb_sql = sp.Popen(['mdb-export', '-I', 'postgres', filename, table], bufsize=-1, stdin=None, stdout=sp.PIPE, universal_newlines=True) mdb_output = mdb_sql.stdout.read() while len(mdb_output) > 0: - insert_match = re.match(r'INSERT INTO "\w+" \([^)]+?\) VALUES \(("[^"]*"|[^")])+?\);\n', - mdb_output, re.IGNORECASE) + insert_match = insert_pattern.match(mdb_output) s3db.execute(insert_match.group()) mdb_output = mdb_output[insert_match.end():] s3db.commit() @@ -407,28 +421,29 @@ def convert_arbin_to_sqlite(input_file, output_file): Any data currently in the sqlite file will be erased! """ s3db = sqlite3.connect(output_file) - - + for table in reversed(mdb_tables + mdb_5_23_tables): s3db.execute('DROP TABLE IF EXISTS "%s";' % table) - + for table in mdb_tables: s3db.executescript(mdb_create_scripts[table]) mdb_get_data(s3db, input_file, table) if table in mdb_create_indices: print("Creating indices for %s..." % table) s3db.executescript(mdb_create_indices[table]) - - if (s3db.execute("SELECT Version_Schema_Field FROM Version_Table;").fetchone()[0] == "Results File 5.23"): + + csr = s3db.execute("SELECT Version_Schema_Field FROM Version_Table;") + version_text, = csr.fetchone() + if (version_text == "Results File 5.23"): for table in mdb_5_23_tables: s3db.executescript(mdb_create_scripts[table]) mdb_get_data(input_file, table) if table in mdb_create_indices: s3db.executescript(mdb_create_indices[table]) - + print("Creating helper table for capacity and energy totals...") s3db.executescript(helper_table_script) - + print("Vacuuming database...") s3db.executescript("VACUUM; ANALYZE;")