import pymysql import pandas as pd from sqlalchemy import create_engine import os from dotenv import load_dotenv from dotenv import load_dotenv, find_dotenv # Tự động tìm file .env gần nhất trong cây thư mục cha load_dotenv(find_dotenv(), override=True) DB_HOST = os.getenv("DB_HOST") DB_USER = os.getenv("DB_USER") DB_PASSWORD = os.getenv("DB_PASSWORD") DB_NAME = os.getenv("DB_NAME") DB_PORT = os.getenv("DB_PORT") # Tạo connection string import os from urllib.parse import quote password = os.getenv("DB_PASSWORD") DB_PASSWORD = quote(password) # Tạo connection string connection_uri = f"mysql+pymysql://{DB_USER}:{DB_PASSWORD}@{DB_HOST}:{DB_PORT}/{DB_NAME}" # db_url = "mysql+pymysql://root@127.0.0.1:3306/demohmdrinks" db_url = connection_uri engine = create_engine(db_url) # # Kết nối đến MySQL # conn = pymysql.connect( # host="localhost", # user="root", # password="Yahana0509@", # database="demohmdrinks", # port=4000, # charset="utf8mb4" # ) async def get_data_recommend(): #Lây danh sách yêu thích query_favourite_items = """ SELECT f.user_id, fi.pro_id FROM favourite_item fi JOIN favourite f ON fi.fav_id = f.fav_id JOIN product p ON fi.pro_id = p.pro_id WHERE p.is_deleted = FALSE; """ df_favourite_items = pd.read_sql(query_favourite_items, con=engine) favourite_items_data = { "user_id": df_favourite_items["user_id"].tolist(), "product_id": df_favourite_items["pro_id"].tolist() } #Lấy danh sách Rating query_rating = """ SELECT re.user_id, re.pro_id, re.rating_star FROM review re JOIN product p ON re.pro_id = p.pro_id WHERE p.is_deleted = FALSE AND re.is_deleted = FALSE ;""" df_rating = pd.read_sql(query_rating, con=engine) reviews_data = { "user_id": df_rating["user_id"].tolist(), "product_id": df_rating["pro_id"].tolist(), "rating": df_rating["rating_star"].tolist() } #Lấy danh sách sản phẩm query_products = """ SELECT p.pro_id, p.pro_name, c.cate_name AS category FROM product p JOIN category c ON p.category_id = c.cate_id WHERE p.is_deleted = FALSE; """ df_products = pd.read_sql(query_products, con=engine) products_data = { "product_id": df_products["pro_id"].tolist(), "name": df_products["pro_name"].tolist(), "category": df_products["category"].tolist() } #Lấy lịch sử mua hàng query_item_cart_new = """ SELECT c.user_id, ci.pro_id FROM cart c JOIN cart_item ci ON c.cart_id = ci.cart_id JOIN product p ON ci.pro_id = p.pro_id WHERE c.status = 'NEW' AND ci.is_deleted = FALSE AND p.is_deleted = FALSE; """ df_cart_new_items= pd.read_sql(query_item_cart_new, con=engine) cart_new_items_data = { "user_id": df_cart_new_items["user_id"].tolist(), "product_id": df_cart_new_items["pro_id"].tolist() } query_history = """ SELECT o.user_id, ci.pro_id AS product_id FROM `orders` o JOIN order_item oi ON o.order_id = oi.order_id JOIN cart c ON oi.cart_id = c.cart_id JOIN cart_item ci ON c.cart_id = ci.cart_id JOIN product pro ON pro.pro_id = ci.pro_id JOIN payments p ON o.order_id = p.order_id WHERE o.status = 'CONFIRMED' AND p.status = 'SUCCESS' AND pro.is_deleted = FALSE UNION ALL SELECT c.user_id, ci.pro_id AS product_id FROM cart c JOIN cart_item ci ON c.cart_id = ci.cart_id ORDER BY user_id, product_id; """ # Đọc dữ liệu vào DataFrame df_history = pd.read_sql(query_history, con=engine) order_history_data = { "user_id": df_history["user_id"].tolist(), "product_id": df_history["product_id"].tolist() } return favourite_items_data,reviews_data,products_data,order_history_data,cart_new_items_data