From 02f46e43fc9f7edb241b84d7959a0dfac9c612fe Mon Sep 17 00:00:00 2001 From: Sirin Puenggun Date: Thu, 11 May 2023 16:34:51 +0700 Subject: [PATCH] add nutrient_show, return dict of nutrients --- Essential/FoodSearch.py | 40 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 40 insertions(+) diff --git a/Essential/FoodSearch.py b/Essential/FoodSearch.py index b4a897e..ac6653b 100644 --- a/Essential/FoodSearch.py +++ b/Essential/FoodSearch.py @@ -46,6 +46,46 @@ class FoodSearch: results = conn.execute(query, (user_input,)).fetchall() return results + except sqlite3.Error as e: + print(f"Database error: {e}") + return [] + + def nutrient_show(self, product_name) -> dict: + """Get nutrient information for a given product name from the food database. + + Parameters: + product_name (str): The name of the product to retrieve nutrient information for. + + Returns: + dict: A dictionary containing nutrient information as key-value pairs, where the keys represent + column names and the values represent the corresponding nutrient values. If no matching + record is found, an empty dictionary is returned. + + Raises: + sqlite3.Error: If there is an error while accessing the database. + + """ + + try: + with sqlite3.connect(self.db_path) as conn: + cursor = conn.cursor() + query = """ + SELECT * + FROM food_data + WHERE product_name = ? + """ + + cursor.execute(query, (product_name,)) + result = cursor.fetchone() + column_names = [d[0] for d in cursor.description] + + if result: + columns_nutrient = result[16:] + data_dict = dict(zip(column_names[16:], columns_nutrient)) + return data_dict + else: + return dict() + except sqlite3.Error as e: print(f"Database error: {e}") return [] \ No newline at end of file