# 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 MixTable 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()