Read_External_SQL_Script

本文介绍了数据库的基本操作方法,包括使用GUI客户端和命令行客户端进行管理。此外还演示了如何通过MySQL调用外部脚本文件,该方法支持在外部文件中加入注释,便于脚本维护。
#####################################################
# 1 对于任何数据库,都必须掌握 GUI client & command client
#
# 2 mysql> \. e:\runsqlscript.txt
#
# ★
# 这是call外部文件
# 外部文件可以有注释
# /* .... */ 多行
# # 单行
#
#####################################################
为啥只连接不运行我的数据啊,我数据库第一次运行没数据阿,咋整 2025-07-31 08:47:01,432 - Colion.DatabaseManager - INFO - 已连接到数据库: d:\Programs\新框架\Colion_frame\Colion\data\colion.db (线程: Dummy-4) 2025-07-31 08:47:01,436 - Colion.model.output_plan - INFO - 从 daily_output_plan_final 获取到 0 条记录。 import os import sqlite3 from datetime import datetime import logging from pathlib import Path from Colion.model.database.db_manager import DatabaseManager # 修复导入问题 from Colion.core.path_helper import get_application_path, get_project_root logger = logging.getLogger(__name__) class OutputPlanModel: def __init__(self, db_manager: DatabaseManager = None): self.db_manager = db_manager if db_manager else DatabaseManager() self.sql_script_path = os.path.join(get_project_root(), 'process_daily_output.sql') self._ensure_final_table_exists() def _ensure_final_table_exists(self): """ 确保 daily_output_plan_final 表存在。 这个表结构需要与 process_daily_output.sql 中 INSERT INTO 的列保持一致。 """ create_table_sql = """ CREATE TABLE IF NOT EXISTS daily_output_plan_final ( "批次" TEXT, "指令" TEXT, "线体" TEXT, "单板代码" TEXT, "单板名称" TEXT, "计划数量" REAL, "产出数量" REAL, "剩余数量" REAL, "计划开始时间" TEXT, "计划结束时间" TEXT, "实际开始时间" TEXT, "修正后计划开始时间" TEXT, "修正后计划结束时间" TEXT, "主工序" TEXT, "工序序号" INTEGER, "入库工序" TEXT, "入库时间" TEXT, "产品大类" TEXT, "工厂" TEXT, "责任人" TEXT, "day_1_output" REAL, "day_2_output" REAL, "day_3_output" REAL, "day_4_output" REAL, "day_5_output" REAL, "day_6_output" REAL, "day_7_output" REAL ); """ try: self.db_manager.execute(create_table_sql) logger.info("daily_output_plan_final 表已存在或已成功创建。") except Exception as e: logger.error(f"创建 daily_output_plan_final 表失败: {e}") raise def process_and_save_daily_output_plan(self): """ 读取 SQL 脚本并执行,生成产出计划数据到 daily_output_plan_final 表。 """ if not os.path.exists(self.sql_script_path): logger.error(f"SQL 脚本文件未找到: {self.sql_script_path}") raise FileNotFoundError(f"SQL script not found at {self.sql_script_path}") try: with open(self.sql_script_path, 'r', encoding='utf-8') as f: sql_script = f.read() logger.info(f"开始执行 SQL 脚本: {self.sql_script_path}") self.db_manager.execute_script(sql_script) logger.info("产出计划数据已成功生成并保存到 daily_output_plan_final 表。") return True except Exception as e: logger.error(f"执行 SQL 脚本失败: {e}", exc_info=True) return False def get_output_plan_data(self, filters: dict = None): """ 从 daily_output_plan_final 表获取产出计划数据。 """ query = "SELECT * FROM daily_output_plan_final WHERE 1=1" params = [] if filters: if 'factory' in filters and filters['factory']: query += " AND 工厂 = ?" params.append(filters['factory']) if 'line' in filters and filters['line']: query += " AND 线体 = ?" params.append(filters['line']) if 'item_no' in filters and filters['item_no']: query += " AND 单板代码 LIKE ?" params.append(f"%{filters['item_no']}%") if 'start_date' in filters and filters['start_date']: query += " AND 修正后计划开始时间 >= ?" params.append(filters['start_date']) if 'end_date' in filters and filters['end_date']: query += " AND 修正后计划结束时间 <= ?" params.append(filters['end_date']) try: data = self.db_manager.query(query, params) logger.info(f"从 daily_output_plan_final 获取到 {len(data)} 条记录。") return data except Exception as e: logger.error(f"获取产出计划数据失败: {e}", exc_info=True) return []
08-01
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值