Skip to content

Commit 6082ecb

Browse files
committed
Implement function to add run parameters to .sqlite files
1 parent fcf6035 commit 6082ecb

1 file changed

Lines changed: 47 additions & 0 deletions

File tree

SQLiteWriter.py

Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -116,3 +116,50 @@ def add_solver_statistics_to_sqlite(filename: str, results, work_units=None) ->
116116
traceback.print_exc()
117117
finally:
118118
cnx.close()
119+
120+
121+
def add_run_parameters_to_sqlite(filename: str, **parameters) -> None:
122+
"""
123+
Add run parameters to an existing SQLite database.
124+
Creates a table 'run_parameters' with parameter names and values.
125+
126+
:param filename: Path to the SQLite database file
127+
:param parameters: Keyword arguments containing parameter names and values
128+
:return: None
129+
130+
Example:
131+
add_run_parameters_to_sqlite('model.sqlite',
132+
zoi='R1',
133+
dc_buffer=2,
134+
tp_buffer=1,
135+
scale_demand=1.3,
136+
scale_pmax=1.0)
137+
"""
138+
cnx = sqlite3.connect(filename)
139+
140+
try:
141+
# Convert parameters to DataFrame
142+
params = {}
143+
for key, value in parameters.items():
144+
# Convert None to string 'None' for storage
145+
if value is None:
146+
params[key] = 'None'
147+
elif isinstance(value, (int, float)):
148+
params[key] = float(value)
149+
else:
150+
params[key] = str(value)
151+
152+
if params:
153+
df = pd.DataFrame([params])
154+
df.to_sql('run_parameters', cnx, if_exists='replace', index=False)
155+
cnx.commit()
156+
printer.information(f"Added run parameters to SQLite database: {', '.join([f'{k}={v}' for k, v in params.items()])}")
157+
else:
158+
printer.warning("No run parameters provided")
159+
160+
except Exception as e:
161+
printer.error(f"Failed to add run parameters: {e}")
162+
import traceback
163+
traceback.print_exc()
164+
finally:
165+
cnx.close()

0 commit comments

Comments
 (0)