import pandas as pd from dev_xlsx import spreadsheet from models import Price, db def spreadsheet_transform(): db.create_tables([Price]) try: # Select the first worksheet worksheet = spreadsheet.get_worksheet(0) # Get all values from the worksheet values = worksheet.get_all_values() # Convert values to DataFrame df = pd.DataFrame(values[1:], columns=values[0]) df.replace('\xa0', ' ', regex=True, inplace=True) except Exception as e: print(f"Error retrieving data from Google Spreadsheet: {e}") return column_mapping = { "": "sku", "Название_позиции_укр": "Название_позиции_укр", "РРЦ": "РРЦ", "Количество": "Количество", "Цена Prom розница": "Цена_Prom_розница", "Скидка в % Prom розница": "Скидка_в_процент_Prom_розница", "Время скидки Prom розница": "Время_скидки_Prom_розница", "Минимальный_объем_заказа": "Минимальный_объем_заказа", "Цена Prom Оптовыей сайт": "Цена_Prom_Оптовыей_сайт", "Минимальный_заказ_опт": "Минимальный_заказ_опт", "Скидка в % Prom опт": "Скидка_в_процент_Prom_опт", "Время скидки Prom опт": "Время_скидки_Prom_опт", "Уникальный_идентификатор prom розн": "Уникальный_идентификатор_prom_розн", "Цена_розн_розетка_r": "Цена_розн_розетка_r", "Цена старая розетка": "Цена_старая_розетка", "Цена_розн_эпицентр_e": "Цена_розн_эпицентр_e", "Цена_розн_алло_a": "Цена_розн_алло_a", "Цена_опенкарт_дроп_os": "Цена_опенкарт_дроп_os", "Цена_опенкарт_опт_os": "Цена_опенкарт_опт_os", "Цена_опенкарт_крупнопт_os": "Цена_опенкарт_крупнопт_os", "Уникальный_идентификатор prom опт": "Уникальный_идентификатор_prom_опт", "ID KCRM": "ID_KCRM", "Уникальный_идентификатор Rozetka": "Уникальный_идентификатор_Rozetka", "Уникальный_идентификатор OS": "Уникальный_идентификатор_OS", "Штрих code": "Штрих_code", "Дата скидки OC": "Дата_скидки_OC", "Скидка дроп %": "Скидка_дроп_процент", "Скидка опт %": "Скидка_опт_процент", "Скидка Крупный опт % ": "Скидка_Крупный_опт_процент", "Цена_опенкарт_дроп_pro_os": "Цена_опенкарт_дроп_pro_os", "Цена_опенкарт_крупнопт-ТОВ_os": "Цена_опенкарт_крупнопт_ТОВ_os", "Скидка дропPRO %": "Скидка_дропPRO_процент" } # Iterate over rows and save to the database try: # Iterate over rows and save to the database for index, row in df.iterrows(): # Create a dictionary to store mapped data mapped_data = {} for column_name, field_name in column_mapping.items(): # Map DataFrame column to model field mapped_data[field_name] = row[column_name] try: # Create a Price object using mapped data Price.create(**mapped_data) except Exception as e: print(f"Error inserting row {index}: {e}") print("Data inserted successfully.") except Exception as e: print(f"Error inserting data into the database: {e}") finally: # Close the database connection db.close() # run script when you want to update all db if __name__ == "__main__": spreadsheet_transform()