79 lines
4.1 KiB
Python
79 lines
4.1 KiB
Python
|
import pandas as pd
|
|||
|
|
|||
|
from dev_xlsx import spreadsheet
|
|||
|
from models import Price, db
|
|||
|
|
|||
|
|
|||
|
def spreadsheet_transform():
|
|||
|
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])
|
|||
|
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()
|