Spaces:
Sleeping
Sleeping
| from db import execute_query, fetch_all | |
| import pandas as pd | |
| EMPTY_MATERIAL_COLUMNS = [ | |
| "material_name", | |
| "material_abbreviation", | |
| "section", | |
| "property_name", | |
| "value", | |
| "unit", | |
| "english", | |
| "test_condition", | |
| "comments", | |
| ] | |
| def load_material_data(material_type: str) -> pd.DataFrame: | |
| table_map = { | |
| "Polymers": "Polymers", | |
| "Fibers": "Fibers", | |
| "Composites": "Composites_materials", | |
| } | |
| table = table_map.get(material_type) | |
| if not table: | |
| return pd.DataFrame(columns=EMPTY_MATERIAL_COLUMNS) | |
| query = f""" | |
| SELECT | |
| material_name, | |
| material_abbreviation, | |
| section, | |
| property_name, | |
| value, | |
| unit, | |
| english, | |
| test_condition, | |
| comments | |
| FROM "{table}" | |
| """ | |
| try: | |
| rows = fetch_all(query) | |
| except Exception: | |
| return pd.DataFrame(columns=EMPTY_MATERIAL_COLUMNS) | |
| return pd.DataFrame(rows, columns=EMPTY_MATERIAL_COLUMNS) | |
| def get_all_sections(): | |
| all_data = pd.concat([ | |
| load_material_data("Polymers"), | |
| load_material_data("Fibers"), | |
| load_material_data("Composites"), | |
| ], ignore_index=True) | |
| if all_data.empty or "section" not in all_data.columns: | |
| return [] | |
| return sorted(all_data["section"].dropna().unique().tolist()) | |
| def insert_material_rows(df: pd.DataFrame) -> int: | |
| if df is None or df.empty: | |
| return 0 | |
| table_map = { | |
| "Polymer": "Polymers", | |
| "Fiber": "Fibers", | |
| "Composite": "Composites_materials", | |
| } | |
| insert_template = """ | |
| INSERT INTO "{table}" ( | |
| material_name, | |
| material_abbreviation, | |
| section, | |
| property_name, | |
| value, | |
| unit, | |
| english, | |
| test_condition, | |
| comments | |
| ) VALUES ( | |
| :material_name, | |
| :material_abbreviation, | |
| :section, | |
| :property_name, | |
| :value, | |
| :unit, | |
| :english, | |
| :test_condition, | |
| :comments | |
| ) | |
| """ | |
| inserted = 0 | |
| for _, row in df.iterrows(): | |
| table = table_map.get(row.get("material_class")) | |
| if not table: | |
| continue | |
| params = { | |
| "material_name": row.get("material_name", ""), | |
| "material_abbreviation": row.get("material_abbreviation", ""), | |
| "section": row.get("section", ""), | |
| "property_name": row.get("property_name", ""), | |
| "value": row.get("value", ""), | |
| "unit": row.get("unit", ""), | |
| "english": row.get("english", ""), | |
| "test_condition": row.get("test_condition", ""), | |
| "comments": row.get("comments", ""), | |
| } | |
| try: | |
| inserted += execute_query(insert_template.format(table=table), params) | |
| except Exception: | |
| return inserted | |
| return inserted | |