# database/sql_server_connection.py """SQL Server数据库连接模块""" import pyodbc from config.settings import SQL_SERVER_CONFIG class SQLServerConnection: def __init__(self): self.config = SQL_SERVER_CONFIG def connect(self): """建立数据库连接""" connection_string = ( f"DRIVER={self.config['driver']};" f"SERVER={self.config['server']};" f"DATABASE={self.config['database']};" f"UID={self.config['username']};" f"PWD={self.config['password']};" ) return pyodbc.connect(connection_string) def get_mix_weight_info(self): """ 获取所有配比号及其对应每方重量的信息 重量计算方式:U1到U17的和,NULL值不计入 """ connection = self.connect() cursor = connection.cursor() try: # 查询所有配比信息 query = """ SELECT Code, U1, U2, U3, U4, U5, U6, U7, U8, U9, U10, U11, U12, U13, U14, U15, U16, U17 FROM Recipe_back WHERE Code IS NOT NULL ORDER BY Code """ cursor.execute(query) results = cursor.fetchall() mix_info = [] for row in results: code = row[0] weights = [row[i] for i in range(1, 18)] # U1到U17 # 计算总重量(忽略NULL值) total_weight = sum(weight for weight in weights if weight is not None and weight != 'NULL') mix_info.append({ "Code": code, "TotalWeight": round(total_weight, 2) # 保留两位小数 }) return mix_info except Exception as e: print(f"查询配比信息时出错: {e}") return [] finally: connection.close()