Записать актуальные цены в другую таблицу sqlite. Python
Есть лог изменения цен продуктов (price_log). В течении времени цены могут изменятся. Таблица отсортирована по дате Как мне с помощью sqlite (python) вывести актуальные цены продуктов и сохранить результат в другую таблицу (price_res)?
Сам решил с помощью DataFrame (pandas), но нужно решение именно с помощью sqlite.
import sqlite3
import datetime
try:
conn = sqlite3.connect('sql7.db')
cursor = conn.cursor()
print("Подключен к SQLite")
sqlite_create_table_query = '''CREATE TABLE IF NOT EXISTS price_log (
ID INT,
product TEXT NOT NULL,
joiningDate timestamp,
price INT);'''
cursor.execute(sqlite_create_table_query)
sqlite_create_table_query = '''CREATE TABLE IF NOT EXISTS price_res (
ID INT,
product TEXT NOT NULL,
price INT);'''
cursor.execute(sqlite_create_table_query)
data = [('1', 'хлеб', '7/9/2002', 34),
('2', 'молоко', '8/9/2002', 58),
('3', 'хлеб', '9/9/2002', 12),
('4', 'масло', '10/9/2002', 56),
('5', 'молоко', '10/9/2002', 74),
('6', 'масло', '10/9/2002', 56),
('7', 'хлеб', '17/9/2002', 82),
('8', 'масло', '19/9/2002', 13),
('9', 'хлеб', '21/9/2002', 5)]
cursor.executemany("INSERT INTO price_log VALUES (?,?,?,?)", data)
conn.commit()
for row in cursor.execute("SELECT * FROM price_log"):
print(row)
cursor.close()
except sqlite3.Error as error:
print("Ошибка при работе с SQLite", error)
finally:
if conn:
conn.close()
print("Соединение с SQLite закрыто")
Решение с помощью Dataframe:
import pandas as pd
import sqlite3
dict = {'Продукт':["хлеб", "молоко", "хлеб", "масло", "молоко", "масло", "хлеб", "масло", "хлеб"],
'Дата измен. цены': ["01.01", "03.01", "07.01", "11.01", "15.01", "18.01", "21.01", "23.01", "25.01"],
'Цена':[34, 45, 35, 75, 42, 52, 63, 5, 8]}
df = pd.DataFrame(dict)
df1 = df.iloc[::-1]
print(df1.iloc[0][0], df1.iloc[0][2])
arr = [df1.iloc[0][0]]
for i in range(1, df.shape[0]):
if df1.iloc[i][0] not in arr:
print(df1.iloc[i][0], df1.iloc[i][2])
arr.append(df1.iloc[i][0])