| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495 |
- """
- 数据库初始化脚本:创建 analytics_demo 库和表结构,插入演示数据。
- 使用方式:python database_build.py
- """
- import mysql.connector
- from config import DB_HOST, DB_PORT, DB_USER, DB_PASSWORD, DB_NAME
- def init_database():
- """创建数据库、表结构并插入演示数据。"""
- # 先连接 MySQL(不指定数据库),确保目标库存在
- conn = mysql.connector.connect(
- host=DB_HOST,
- port=int(DB_PORT),
- user=DB_USER,
- password=DB_PASSWORD,
- )
- cursor = conn.cursor()
- cursor.execute(f"CREATE DATABASE IF NOT EXISTS {DB_NAME} DEFAULT CHARSET utf8mb4")
- conn.database = DB_NAME
- # ---- 建表 ----
- cursor.execute("""
- CREATE TABLE IF NOT EXISTS employees (
- id INT PRIMARY KEY AUTO_INCREMENT,
- name VARCHAR(50) NOT NULL,
- department VARCHAR(50) NOT NULL,
- salary DECIMAL(10,2) NOT NULL,
- hire_date DATE
- ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
- """)
- cursor.execute("""
- CREATE TABLE IF NOT EXISTS products (
- id INT PRIMARY KEY AUTO_INCREMENT,
- product_name VARCHAR(100) NOT NULL,
- category VARCHAR(50) NOT NULL,
- price DECIMAL(10,2) NOT NULL,
- stock INT DEFAULT 0
- ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
- """)
- cursor.execute("""
- CREATE TABLE IF NOT EXISTS orders (
- id INT PRIMARY KEY AUTO_INCREMENT,
- employee_id INT NOT NULL,
- product_id INT NOT NULL,
- quantity INT NOT NULL,
- order_date DATE NOT NULL,
- FOREIGN KEY (employee_id) REFERENCES employees(id),
- FOREIGN KEY (product_id) REFERENCES products(id)
- ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
- """)
- # ---- 插入演示数据 ----
- employees_data = [
- (1, "张三", "技术部", 20000.00, "2023-01-15"),
- (2, "李四", "销售部", 11000.00, "2023-02-20"),
- (3, "王五", "技术部", 16000.00, "2022-11-10"),
- (4, "赵六", "人力资源", 5000.00, "2023-03-01"),
- (5, "钱七", "销售部", 17000.00, "2022-12-05"),
- ]
- products_data = [
- (1, "笔记本电脑", "电子产品", 6999.00, 500),
- (2, "机械键盘", "电子产品", 399.00, 1000),
- (3, "办公椅", "办公用品", 499.00, 300),
- (4, "显示器", "电子产品", 1200.00, 400),
- ]
- orders_data = [
- (1, 1, 1, 2, "2024-01-15"),
- (2, 2, 2, 15, "2024-01-16"),
- (3, 3, 1, 10, "2024-01-17"),
- (4, 5, 3, 6, "2024-01-18"),
- (5, 2, 4, 5, "2024-01-19"),
- ]
- cursor.executemany("INSERT IGNORE INTO employees VALUES (%s,%s,%s,%s,%s)", employees_data)
- cursor.executemany("INSERT IGNORE INTO products VALUES (%s,%s,%s,%s,%s)", products_data)
- cursor.executemany("INSERT IGNORE INTO orders VALUES (%s,%s,%s,%s,%s)", orders_data)
- conn.commit()
- conn.close()
- print("✅ 数据库初始化完成")
- print(" - employees 表:5 条员工记录")
- print(" - products 表:4 条产品记录")
- print(" - orders 表:5 条订单记录")
- if __name__ == "__main__":
- init_database()
|