xlsx_to_db_count_replace/xlsx_to_db_transformer.py

81 lines
4.2 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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()