| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283 |
- #!/usr/bin/env python
- # -*- encoding: utf-8 -*-
- '''
- @filename : mock_data_to_database.py
- @description : 将mock数据写入到数据库中
- @time : 2025/01/31/00
- @author : Sherlock1011 & Min1027
- @Version : 1.0
- '''
- from dao.mysql_client import Mysql
- import pandas as pd
- from sqlalchemy import Column, Integer, VARCHAR, Float, DECIMAL
- from sqlalchemy.ext.declarative import declarative_base
- # 定义数据库表结构
- Base = declarative_base()
- class MockOrder(Base):
- __tablename__ = "mock_order"
- id = Column(Integer, primary_key=True, autoincrement=True) # 添加主键列
- BB_RETAIL_CUSTOMER_CODE = Column(VARCHAR(50))
- PRODUCT_CODE = Column(VARCHAR(50))
- MONTH6_SALE_QTY = Column(DECIMAL(18, 6))
- MONTH6_SALE_AMT = Column(DECIMAL(18, 6))
- MONTH6_GROSS_PROFIT_RATE = Column(DECIMAL(18, 6))
- MONTH6_SALE_QTY_YOY = Column(DECIMAL(18, 6))
- MONTH6_SALE_QTY_MOM = Column(DECIMAL(18, 6))
- MONTH6_SALE_AMT_YOY = Column(DECIMAL(18, 6))
- MONTH6_SALE_AMT_MOM = Column(DECIMAL(18, 6))
- ORDER_FULLORDR_RATE = Column(DECIMAL(18, 6))
- CUSTOMER_REPURCHASE_RATE = Column(DECIMAL(18, 6))
- NEW_PRODUCT_ORDER_QTY_OCC = Column(DECIMAL(18, 6))
- LISTING_RATE = Column(DECIMAL(18, 6))
- OUT_STOCK_DAYS = Column(DECIMAL(18, 6))
- RETAIL_PRICE_INDEX = Column(DECIMAL(18, 6))
-
- def insert_data(db, data_path):
- df = pd.read_excel(data_path)
- session = db.create_session()
- try:
- df.columns = ['BB_RETAIL_CUSTOMER_CODE',
- 'PRODUCT_CODE',
- 'MONTH6_SALE_QTY',
- 'MONTH6_SALE_AMT',
- 'MONTH6_GROSS_PROFIT_RATE',
- 'MONTH6_SALE_QTY_YOY',
- 'MONTH6_SALE_QTY_MOM',
- 'MONTH6_SALE_AMT_YOY',
- 'MONTH6_SALE_AMT_MOM',
- 'ORDER_FULLORDR_RATE',
- 'CUSTOMER_REPURCHASE_RATE',
- 'NEW_PRODUCT_ORDER_QTY_OCC',
- 'LISTING_RATE',
- 'OUT_STOCK_DAYS',
- 'RETAIL_PRICE_INDEX',
- ] # 确保列名匹配
- session.bulk_insert_mappings(MockOrder, df.to_dict(orient='records'))
- session.commit()
- print("数据成功插入数据库")
-
- except Exception as e:
- session.rollback()
- print(f"插入数据时出错: {e}")
-
- finally:
- session.close()
-
-
- if __name__ == "__main__":
- data_path = "./data/order.xlsx"
- # 创建数据库链接
- db = Mysql()
-
- # 创建表(如果不存在)
- Base.metadata.create_all(db.engine)
- insert_data(db, data_path)
-
- db.closed()
-
-
-
|